您好我正在尝试隐藏我的observableArray的第一个元素,以下似乎没有工作,任何想法?
data-bind =“ifnot:$ root.typedData [0] === $ data” http://jsfiddle.net/Lx8jR/
<table border="1" style="width:90%">
<tr>
<td data-bind="text: typedData()[0].name"></td>
<td data-bind="text: typedData()[0].type"></td>
</tr>
<tr>
<td>
<table data-bind="foreach: typedData()">
<tr>
<td data-bind="text: name"></td>
</tr>
</table>
</td>
<td>
<table data-bind="foreach: typedData()">
<tr data-bind="ifnot: $root.typedData[0]===$data">
<td data-bind="text: type">
</td>
<td data-bind="text: $index">
</td>
</tr>
</table>
</td>
</tr>
</table>
var ViewModel = function() {
var self = this;
this.typedData = ko.observableArray([
{ name: "Bungle", type: "Bear" },
{ name: "George", type: "Hippo" },
{ name: "Zippy", type: "Unknown" }
]).indexed();
}
答案 0 :(得分:2)
看起来你在那条线上错过了一个()。
ifnot: $root.typedData[0]===$data
变为
ifnot: $root.typedData()[0]===$data
我做了几十次的一个简单错误。
如果你养成了使用ko.utils.unwrapObservable
的习惯,这就变得不那么重要了。如果在不可观察的情况下使用该函数,它仍然会成功。
... ko.utils.unwrapObservable($root.typedData)[0]
作为参考,有一个article on KnockMeOut,它提出了一些有助于简化模板和绑定的其他标准。
答案 1 :(得分:1)
typedData
是一个observableArray,所以在你的比较中你想做(add()):
$root.typedData()[0] === $data