Mar*_*son 73 javascript mvvm knockout.js
我发现的所有淘汰示例似乎都使用以下内容在ObservableArray的末尾添加了一个新项:
viewModel.SomeItems.push(someNewItem);
Run Code Online (Sandbox Code Playgroud)
这当然将项目放在数组的末尾.
如何在特定位置向ObservableArray添加项?
例如.就像是:
viewModel.SomeItems.push(someNewItem, indexToInsertItAt);
Run Code Online (Sandbox Code Playgroud)
ipr*_*101 82
您应该能够使用本机JavaScript splice方法 -
viewModel.SomeItems.splice(2,0,someNewItem);
Run Code Online (Sandbox Code Playgroud)
文档 - https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Array/splice
这里的示例(不是Knockout特定的) - 如何在特定索引处将项插入数组?
来自Knockout文档 -
对于修改数组内容的函数,例如push和splice,KO的方法会自动触发依赖关系跟踪机制,以便向所有已注册的侦听器通知更改,并自动更新UI.
小智 23
用于淘汰赛
viewModel.SomeItems.unshift(someNewItem);
Run Code Online (Sandbox Code Playgroud)
另见:http://knockoutjs.com/documentation/observableArrays.html
Ada*_*gen 12
我做了这个扩展功能,对我来说效果很好.如果我添加到稀疏数组的末尾,Splice对我不起作用.
ko.observableArray.fn.setAt = function(index, value) {
this.valueWillMutate();
this()[index] = value;
this.valueHasMutated();
}
Run Code Online (Sandbox Code Playgroud)
这甚至适用于:
var a = ko.observableArray(['a', 'b', 'c']);
a.setAt(42, 'the answer');
Run Code Online (Sandbox Code Playgroud)