2015-10-17 73 views
0

我使用挖空映射庫將JSON數據從.NET服務綁定到KO視圖模型中的一個屬性,其中該屬性具有需要循環並呈現的對象數組屏幕。通過可觀察數組的敲除屬性循環

的.NET模型:

new{ 
    count = count, 
    total = total, 
    rows = items, 
} 

行屬性保存對象列表,需要被渲染成使用KO的表。使用

<!-- ko foreach: masterData().rows--> 
<tr> 
    <td><span data-bind='text: Id' /></td> 
    <td><span data-bind='text: Name' /></td> 
    <td><span data-bind='text: Description' /></td> 
    <td><span data-bind='text: Status' /></td> 
</tr> 
<!-- /ko --> 

其中masterData是可觀察到的

我累了。數據加載後,它不會在表格中呈現任何內容。作爲一種變通方法,我已經改變了模型的可觀察到observableArray([])

new List<dynamic> { 
    new 
    { 
     count = recCount, 
     total = total, 
     rows = items, 
    }}; 

,改變了渲染邏輯

<!-- ko foreach: masterData --> 
<!-- ko foreach: rows--> 
<tr> 
    <td><span data-bind='text: Id' /></td> 
    <td><span data-bind='text: Name' /></td> 
    <td><span data-bind='text: Description' /></td> 
    <td><span data-bind='text: Status' /></td> 
</tr> 
<!-- /ko --> 
<!-- /ko --> 

現在按預期工作。應該有一個更好的方式來處理這個問題,或者我錯過了我想的東西。另外,我需要遍歷這個列表才能訪問其他屬性。

編輯1:

http://jsfiddle.net/krishnasarma/hdt9ehth/

+0

我認爲你需要讓你的第一個'的foreach:masterData()行()'。 –

+0

這很奇怪......如果認爲它應該可以正常工作。爲您的代碼和示例數據提供一個JSFiddle –

回答

2

以及我調整了代碼點點,使其理想。我看到沒有點循環masterData獲得rows數據。

我們現在可以使用with綁定,這對於上面描述的這種場景是完美的。

觀點:

<table> 
    <thead> 
     <tr> 
      <th>Id</th> 
      <th>Name</th> 
      <th>Description</th> 
      <th>Status</th> 
     </tr> 
    </thead> 
    <tbody data-bind="with:masterData2"> 
     <!-- ko foreach:rows --> 
     <tr> 
      <td><span data-bind='text: Id' /></td> 
      <td><span data-bind='text: Name' /></td> 
      <td><span data-bind='text: Description' /></td> 
      <td><span data-bind='text: Status' /></td> 
     </tr> 
     <!-- /ko --> 
    </tbody> 
</table> 

視圖模型:

var VM = { 
    masterData: ko.observable([]), //initializing 
    masterData2: ko.observable([]) 
} 

樣品工作撥弄here

如果你想在延遲加載單向here