0

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

我有

<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 中使用。

4

1 回答 1

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>

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

于 2012-12-04T06:18:52.200 回答