2014-09-27 204 views
0

我學習AngularJS,我不能明白什麼是ng-options指令中的表達式的meanning,這裏是對code一個鏈接,我不明白以下幾點:AngularJS,NG選項

ng-options="net for net in networks" 

我已經看過的docs和文檔解釋上面的表達式爲:在陣列

標籤值

所以有每個選項裏面的價值屬性,價值代表了數組中的關鍵,我的問題是表達net for net in networks作品我怎麼個意思:

  • 我認爲第一net是關鍵,第二個是的值,所以表達式是「說」取netwroks數組中的該值的關鍵字,並將其放置在每個選項元素的每個值屬性中。
  • 我無法理解的是net for net如何影響ng-model="network"

回答

1

這裏是我的文檔爲您簡單的解釋:

label是顯示給用戶的選擇元素的內容。

value是選擇該選項時放置在ngModel綁定中的值,而不是您所假定的選項元素的值屬性。

選項元素的value屬性是通過角度設置爲array中相關項目的索引(正如您可以看到是否檢查您的plunker示例中的select元素)。

編輯

你能想到的ng-optionsforeach循環。由於networks在這種情況下是一個字符串數組,net只是成爲數組中的每個字符串項。

如果網絡是一個對象數組,情況會有所不同。鑑於networks看上去像這個:

var networks = [ 
    { id: 10, name: 'Verizon' }, 
    { id: 20, name: 'AT&T' }, 
    { id: 30, name: 'Sprint' }, 
]; 

net將成爲陣列中的每個對象。在這種情況下,您可以使用表達式net.name for net in networks來顯示網絡的名稱,但給ngModel綁定對象本身的值。如果您想使用id作爲值,則可以使用表達式net.id as net.name for net in networks。請參閱更新的代碼here

+0

你好,泰勒,謝謝你的回答,但我仍然不明白'net for net'如何影響任何東西,第一個'net'必須等於第二個'net',你能解釋一下行爲嗎?你可以給我更多關於'net for net'如何連接'networks'和'ng-bind'的細節。 – 2014-09-28 00:59:22

+0

@AvielFadida請參閱我的更新回答。 – 2014-09-28 13:11:42

+0

謝謝泰勒。 – 2014-10-02 12:15:59