【问题标题】:Resizing Knockout ObservableArray调整 Knockout ObservableArray 的大小
【发布时间】:2014-07-10 04:30:48
【问题描述】:

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

ViewModel 和 remove 的代码是

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

【问题讨论】:

    标签: knockout.js


    【解决方案1】:

    如图所示,您的代码没有任何问题。

    查看此 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());
    

    【讨论】:

      猜你喜欢
      • 2018-12-01
      • 2019-02-17
      • 1970-01-01
      • 2014-04-20
      • 1970-01-01
      • 2013-05-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多