15

ドロップダウン選択オプション リストにデータを入力し、ng-model と ng-options を使用してデフォルトの選択値を設定しようとしています。

私の見解には次のコードがあります。

<select ng-model="thisTour.site" ng-options="site.name for site in siteList"></select>

そして私のコントローラーで:

    $scope.siteList = [
        { id: 1, name: 'cycling'},
        { id: 2, name: 'walking'},
        { id: 3, name: 'holidays'}
    ]

    $scope.thisTour.site = { id: 2, name: 'walking'};

siteListリストにはオブジェクトから正しい 3 つのオプションが取り込まれていますが、期待どおりにデフォルトでウォーキングが選択されていませんか? なぜだめですか?

さて、これを変更すると:

$scope.thisTour.site = { id: 2, name: 'walking'};

これに:

$scope.thisTour.site = $scope.siteList[1];

今では動作します。なんで?それは同じことではありませんか?

4

4 に答える 4

1

選択でオブジェクト全体を使用しているため、Angular が比較を行うときに、選択を設定するためにオブジェクトが同じかどうかを確認します。Angular が比較を行う方法で機能を変更する方法があると思いますが、選択をループして、以下のような独自の比較を行います。

$scope.siteList = [
        { id: 1, name: 'cycling'},
        { id: 2, name: 'walking'},
        { id: 3, name: 'holidays'}
    ]
angular.forEach($scope.siteList, function(site, index) {
    if (site.id == 2) {
        $scope.thisTour.site = site;
    }
});

これにより、実際のオブジェクトが変数に設定され、選択で設定できるようになります。

于 2014-12-16T21:36:40.427 に答える