2015-12-08 40 views
0

我填充物的knockoutjs陣列獲得數組的第一個元素在淘汰賽JS

我想避免使用的foreach的,所以我試圖data-bind第一項

如果我用下面代碼它工作正常

<div class="loader" data-bind="foreach: Items" > 
     <span data-bind="text: name"></span> 
    </div> 

但是,如果使用的一個下面,它不工作

<div class="loader"> 
     <span data-bind="text: Items[0].name"></span> 
    </div> 

第二種方法的錯誤是什麼?

我得到的錯誤是

Uncaught TypeError: Unable to process binding "text: function (){return Items[0].name }" Message: Cannot read property 'name' of undefined

回答

1

以及你需要unwrap的observableArray Items閱讀它的使用()符號的內容。

嘗試這樣

<div class="loader"> 
    <span data-bind="text: Items()[0].name"></span> 
</div> 
+0

當我使用的第一個,它的工作原理每次 但在此項目()[0],有時它會導致下面的錯誤 '未捕獲的類型錯誤:無法處理綁定「文本:函數(){返回項目( )[0] .Name}「 消息:無法讀取未定義的屬性'名稱' –

+0

你確定@vignesh'items'總是一個observableArray或者你直接綁定json來查看?另外還有在數組下定義的Name。 –

+0

是的。它是observableArray和.Name是在其中定義的 它在我使用第一種方式時使用ng-repeat –

1
text: Items()[0].name 

檢查它。

1

二者必選其一Items()[0].nameko.unwrap(Items)[0] 我會建議第二個,因爲它是安全的,因爲它會返回數組即使項目不是一個觀察的陣列,從而有助於避免例外。

+0

這樣??? '' –

+0

yup @vignesh!如果所有'items'都不可觀察,即普通的java腳本數組。 –