2016-08-30 149 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」來跟蹤除對象相等以外的其他內容。