我有一个ObservableArray对象,用户可以从中删除。删除对象时,将从UI中删除该对象,并在后端调用一个函数,该函数删除附加到我的模型的列表中该索引处的对象,然后自然地调整列表大小。但是,在前端,可观察数组没有调整大小。如果我删除第三个位置的项目,在索引2处,然后单击以删除相同位置的项目,它将调用删除索引3处的项目,因为可观察数组尚未调整大小。有没有办法让这个数组每次调整大小,或者将所有内容移动到正确的位置,而不是每次删除对象时都重新创建可观察的数组?
ViewModel和remove的代码是
function TweetViewModel(){
var self = this;
self.tweets = ko.observableArray([]);
self.removeTweet = function(tweet) {
self.tweets.remove(tweet);
};
}
答案 0 :(得分:3)
显示代码没有任何问题。
请参阅此 working JSFiddle ,这可能会突出您缺少的内容。
<强> HTML 强>
<div data-bind="foreach: tweets">
<span data-bind="text: $data"></span>
<input type="button" data-bind="click: $root.removeTweet" value="remove" />
<hr/>
</div>
查看模型
function TweetViewModel(){
var self = this;
self.tweets = ko.observableArray(['one','two','three']);
self.removeTweet = function(tweet) {
self.tweets.remove(tweet);
}
}
ko.applyBindings(new TweetViewModel());