2016-10-04 78 views
0
我使用基因敲除和敲除-REST(它的映射,使可觀察到的所有對象)

敲除無法解析綁定到功能中的foreach

<script> var regosViewModel = new RegosViewModel();</script> 

<span data-bind="text: regos().list()[0].rid()"></span> 

<table class="table table-striped"> 
<thead><th>rid</th></thead> 

<div data-bind="foreach: regos().list()"> 
<tr><td data-bind="text: rid()"></td></tr> 

<script>ko.applyBindings(regosViewModel);</script> 

跨度將返回數字1,但試圖在下面的foreach循環中做同樣的事情導致「Error:Unable to parse bindings。 Message:ReferenceError:Can not find variable:rid; Bindings value:text:rid()」。

任何人都可以解釋爲什麼嗎?值得注意的是,text:$ index也具有相同的綁定錯誤。

+1

你需要把「數據綁定=」的foreach :regs().list()「,並刪除div:例如:' – nemesv

+0

請顯示您的型號代碼。 –

回答

2

當數據綁定一個table元素時,您必須確保它生成有效的html。 A table不能直接持有div。試試這個:

<table class="table table-striped"> 
    <thead> 
    <tr> 
     <th>rid</th> 
    </tr> 
    </thead> 
    <tbody data-bind="foreach: regos().list()"> 
    <tr> 
     <td data-bind="text: rid()"></td> 
    </tr> 
    </tbody> 
</table> 

看看這個例子表明,一個無效的表格標記不會呈現:

ko.applyBindings({ arr: [{label: "label 1"}, {label: "label 2"}] });
<script src="https://cdnjs.cloudflare.com/ajax/libs/knockout/3.2.0/knockout-min.js"></script> 
 
<h3>Valid table:</h3> 
 
<table> 
 
    <tbody data-bind="foreach: arr"> 
 
    <tr> 
 
     <td data-bind="text: label"></td> 
 
    </tr> 
 
    </tbody> 
 
</table> 
 

 
<h3>Invalid table</h3> 
 
<table> 
 
    <div data-bind="foreach: arr"> 
 
    <tr> 
 
     <td data-bind="text: label"></td> 
 
    </tr> 
 
    </div> 
 
</table>