这是ng-options的正确行为吗?

时间:2015-11-05 13:56:48

标签: angularjs ng-options

我有一个国家选择列表。我希望被选中的是德国(ID:2)。

当我选择一个值时,模型会保存ID,而不是整个对象。

    $scope.countries = [
        { id: 1, name: 'Italy' },
        { id: 2, name: 'Spain' },
        { id: 3, name: 'Germany' },
        { id: 4, name: 'France' }
    ];

    // DESIRED BEHAVIOUR
    $scope.selectedCountry = 3; // GERMANY ID

这个小提琴表明我想要的东西:http://jsfiddle.net/Lgevdx1m/

THX。

3 个答案:

答案 0 :(得分:0)

您的代码中的问题是带有ng-options的track by,这可能是一个错误。

如果删除曲目,则ng-options按预期工作 如果你把它改成track by $index那么选择了错误的元素(法国),因为它的数组中的索引是3

并且任何track by country*都不起作用

答案 1 :(得分:-1)

嗯,德国是ID:3

    // THIS WORKS, BUT THE INITIAL MODEL WOULD BE THE OBJECT
    //$scope.selectedCountry = $scope.countries[2];
    //$scope.selectedCountry = { id: 3, name: 'Germany' };

答案 2 :(得分:-1)

你应该这样使用ng-options="country as country.name for country in countries track by country.id"。 Angular自己获取id并将其写入选项的值。