我发现的所有敲除示例似乎都使用类似以下方法在ObservableArray的末尾添加了一个新项目:
viewModel.SomeItems.push(someNewItem);
当然,这会将项目放置在数组的末尾。
如何在某个位置将项目添加到ObservableArray?
例如。就像是:
viewModel.SomeItems.push(someNewItem, indexToInsertItAt);
Answers:
您应该可以使用本机JavaScriptsplice
方法-
viewModel.SomeItems.splice(2,0,someNewItem);
此处的文档-https: //developer.mozilla.org/zh-CN/JavaScript/Reference/Global_Objects/Array/splice
此处的示例(并非特定于Knockout)-如何在特定索引处将项目插入数组?
从淘汰赛文档-
对于修改数组内容的函数(例如推和拼接),KO的方法会自动触发依赖项跟踪机制,以便将更改通知所有注册的侦听器,并自动更新您的UI。
用于淘汰赛
viewModel.SomeItems.unshift(someNewItem);
另请参阅:http : //knockoutjs.com/documentation/observableArrays.html
我做了这个扩展功能,对我来说很好用。如果我要添加到稀疏数组的末尾,则Splice不能为我工作。
ko.observableArray.fn.setAt = function(index, value) {
this.valueWillMutate();
this()[index] = value;
this.valueHasMutated();
}
这甚至适用于:
var a = ko.observableArray(['a', 'b', 'c']);
a.setAt(42, 'the answer');
this()[index] = value;
到即可this.splice(index, 0, value);
。谢谢亚当!