Knockout:基于可观察数组中的属性值设置可见性

时间:2012-12-04 02:13:22

标签: knockout.js observable

您好我希望能够根据数组的值绑定表格中项目的可见性。

我有

<input type="text" value="2" data-bind="visible: this.arrayVal[2].name == 'RST'/>

依此类推,我让Jquery生成数据绑定值。这是对的吗?

另外,我如何动态初始化值。 N行表的示例,我想将值绑定到10行的可观察数组?

所以要清除这是我写的,因为我无法控制html,我使用Jquery添加数据绑定。

function addDataBind(index) {
   var selectItem, textItem;
   selectItem = $("#input" + index + "selectItem");
   textItem = $("#input" + index + "textItem");
   if (selectItem.length && textItem.length) {
        selectItem.attr("data-bind", "value: arrayVal[" + index + "], valueUpdate: 'afterkeydown'"
        textItem.attr("data-bind", "visible: arrayVal[" + index + "] == 'RST'");
   }
}

使用this.arrayVal()[$ index]在firefox中不起作用,但在chrome中有效。 但使用this.arrayVal [$ index]同时适用于firefox和chrome。

1 个答案:

答案 0 :(得分:0)

这里的一个主要问题似乎是你没有正确引用可观察数组,如果arrayVal确实是你需要做的可观察数组:

<input type="text" value="2" data-bind="visible: this.arrayVal()[2].name == 'RST'"/>

要动态初始化value属性,您需要执行以下操作:

<div data-bind="foreach: this.arrayVal">
    <input type="text" data-bind="visible: name == 'RST', value: $index"/>
</div>

这消除了在视图中直接引用数组索引的丑陋。