调整Knockout ObservableArray的大小

时间:2014-05-21 13:31:36

标签: knockout.js

我有一个ObservableArray对象,用户可以从中删除。删除对象时,将从UI中删除该对象,并在后端调用一个函数,该函数删除附加到我的模型的列表中该索引处的对象,然后自然地调整列表大小。但是,在前端,可观察数组没有调整大小。如果我删除第三个位置的项目,在索引2处,然后单击以删除相同位置的项目,它将调用删除索引3处的项目,因为可观察数组尚未调整大小。有没有办法让这个数组每次调整大小,或者将所有内容移动到正确的位置,而不是每次删除对象时都重新创建可观察的数组?

ViewModel和remove的代码是

    function TweetViewModel(){
    var self = this;
    self.tweets = ko.observableArray([]);
    self.removeTweet = function(tweet) {
    self.tweets.remove(tweet);
   };
  }

1 个答案:

答案 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());