2016-10-04 83 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>