所有淘汰賽的例子,我發現,似乎可以用像一個新的項目添加到ObservableArray結束:如何添加/插入一項的ObservableArray在與Knockout.js某個位置
viewModel.SomeItems.push(someNewItem);
這當然會將項目放置在數組的末尾。
如何在某個位置向ObservableArray添加項目?
例如,是這樣的:
viewModel.SomeItems.push(someNewItem, indexToInsertItAt);
所有淘汰賽的例子,我發現,似乎可以用像一個新的項目添加到ObservableArray結束:如何添加/插入一項的ObservableArray在與Knockout.js某個位置
viewModel.SomeItems.push(someNewItem);
這當然會將項目放置在數組的末尾。
如何在某個位置向ObservableArray添加項目?
例如,是這樣的:
viewModel.SomeItems.push(someNewItem, indexToInsertItAt);
您應該能夠使用本地JavaScript splice
方法 -
viewModel.SomeItems.splice(2,0,someNewItem);
文檔在這裏 - https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Array/splice
例這裏(對於剔除特定) - How to insert an item into an array at a specific index?
來自Knockout文檔 -
對於修改數組的內容,如推 拼接功能,KO的方式自動觸發依賴跟蹤 機制,使所有註冊的偵聽器通知更改, 和您的用戶界面會自動更新。
淘汰賽使用
viewModel.SomeItems.unshift(someNewItem);
參見:http://knockoutjs.com/documentation/observableArrays.html
我做這工作很好地爲我這個擴展功能。如果我將數據添加到稀疏數組的末尾,則拼接對我而言不起作用。
var a = ko.observableArray(['a', 'b', 'c']);
a.setAt(42, 'the answer');
如果你想要做insertAt而非setAt,只需切換'當酷動畫這個()[指數] =值;''到this.splice(索引,0值); '。感謝Adam! –
感謝:
這甚至與工作。拼接工作。對於淘汰賽用戶,如果您想查找基於現有項目插入新項目的索引,則ko.utils.arrayIndexOf也很有用。 –
這不適用於稀疏數組,至少它不適合我在Chrome中使用。請參閱下面的答案 –