2016-08-30 114 views
2

第一个问题:angularjs使用ng选项选择默认值

当我的数据不是数组时,如何使用ng-option设置默认值?这很容易,如果产品阵列,我根本就做

select = $scope.items[0]; 

这里是Demo

第二个问题:

<select ng-model="selected" ng-options="name for (name, value) in items"></select> 

我居然不知道这是如何工作的^

和我的控制器我有这样的键值对象

$scope.items = { 
    'one': 30, 
    'two': 27, 
    'three': 50, 
    'four': 15, 
    'five': 27, 
    'six': 30 
    }; 
+0

ng-option当我的数据不是数组?但是什么?和'ng-option'只能用于数组 –

+0

你想显示为选中的内容吗? – Vineet

+0

@Vineet我的对象的第一个值 –

回答

0

问题1:

如果$scope.items不是一个数组而是object 然后

select = $scope.items.one; // to select first 

OR

select = $scope.items['one']; // to select first 

问题2:

在你的代码

<select ng-model="selected" ng-options="name for (name, value) in items"></select> 

JS

$scope.secleted = $scope.items['one'] 

(name, value) in items将返回名称和值(keyvalue对阵列)的阵列。您可以将valuesname对应。这就是为什么它的工作原理

+0

更多阅读'for in'?这是否像在JS中正常的'in in'? –

+0

如果我有嵌套的数组对象,该怎么办? ng-option会继续工作吗? –

+0

实际上选择将在选项的价值。在你的情况下,你有两个选项具有相同的值'one'和'six'。加syam你忘了在控制器的变量上设置默认选项,即'selected'。用'$ scope.secleted = $ scope.items ['one']'更新你的代码。在你的情况下,传递这个'$ scope.items ['one''不会按预期工作。 – Vineet

0

当对象中的值是原始类型(如你的情况),角度比较而不是参考。所以:

​​

或:

$scope.selected = $scope.items['one']; 

作品。

如果这些值是非原始的,那么我建议使用“track by”来跟踪除对象相等以外的其他内容。