我一直在尋找documentation淘汰賽的observableArray
,我無法弄清楚如何做一個數組最基本的事情:按索引分配一個值。通過索引爲knockout.js observableArray指定元素的正確方法是什麼?
事情我已經試過:(給出oa = ko.observableArray([1,2,3])
)
oa(1, 10);
oa[1] = 10;
oa()[1] = 10;
oa.splice(1, 1, 10);
最後一個似乎工作,但我很擔心那.splice()
可能是我因爲它必須關注所有後續值的移動。我寧願只做簡單的基於索引的分配。
我已經created a jsfiddle顯示observableArray是奇怪的。
<ol data-bind="foreach: list">
<li data-bind="text: $data"></li>
</ol>
<script>
var model = {
list: ko.observableArray([3, 5, 7])
};
ko.applyBindings(model);
setTimeout(function() {
model.list()[1] = 55;
model.list.push(99);
model.list()[2] = 77;
}, 2000);
</script>
「的observableArray軌道哪些對象數組中,這些對象不在狀態」後,適用於你的觀察到valueHasMutated財產。這就是爲什麼我期望有一些機制可以用另一個對象替換數組中的對象,並且ko會意識到這一點。我的例子不顯示我改變數組中的對象的屬性,而是替換整個對象。儘管如此,這是一個重要的想法,你是對的。 – recursive