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

ここでの主な問題の 1 つは、監視可能な配列を正しく参照していないことです。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 に答える