2012-12-04 36 views
0

嗨,我希望能夠綁定基於數組值的表中項目的可見性。Knockout:在可觀察數組中設置屬性值的可視性基礎

我有

<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都可以使用。

回答

0

這裏的一個主要問題似乎是你沒有正確地引用觀察到的數組,如果arrayVal真的是可觀察到的數組,你需要做的:

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

要初始化值動態屬性,你需要做這樣的事情:

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

這帶走了直接在視圖中引用數組索引的醜陋。

相關問題