骨干收集获取(补充:真)不更新集合(Backbone collection fetch (add:t

2019-08-17 10:08发布

loadMore: function(){
    var $this = this;
    console.log(this.Messages); //SAME AS AFTER
    this.Messages.url = '/js/messages/?start=' + this.Messages.length
    this.Messages.fetch({'add':true,
        success:function(){
            console.log($this.Messages); //SAME AS BEFORE??
        },
        error:function(){
        }
    });
 },

收集不更新。 该功能后,事件被触发,而新项目在屏幕上绘制。 问题是,收集并没有增加新的车型。

Answer 1:

正如在前面的回答中提到的add在1.0.0移除选项。 你可以通过完成同样的事情remove: false代替。 从文档:

取的行为可以通过使用可用的设置选项进行定制。 例如,为了获取一个集合,得到一个“添加”事件对每一个新的模式,而“改变”事件,每改变现有的模型,没有消除任何: collection.fetch({remove: false})



Answer 2:

Backbone.Collection.fetch():

fetch: function(options) {
  options = options ? _.clone(options) : {};
  if (options.parse === void 0) options.parse = true;
  var success = options.success;
  options.success = function(collection, resp, options) {
    var method = options.update ? 'update' : 'reset';
    collection[method](resp, options);
    if (success) success(collection, resp, options);
  };
  return this.sync('read', this, options);
},

那么什么是在这里,你的函数传递分配给var succees
collection[method](resp, options); 被调用,并在你的情况的方法是'reset'
collection.reset要经过并添加所有车型,开枪的方式,所有的事件。 我不知道到底发生了什么事情,但它通过collection.resetcollection.addmodel.add ,等等。我没有跟这一切。

我不知道这个问题到底是什么,我感到很抱歉。 我希望我至少可以帮你尝试一些东西,所以也许我们可以计算出来。 该生产线if (success) success(collection, resp, options)是调用你的更迭功能。 让你的成功回调接受传回的参数和做那些出了些安慰的是什么,你可以尝试做的是:

success: function(collection, resp, options) {
  console.log(collection); // this might do the trick.

  // if not, you could try the following
  collection.on("reset", function(c, options) {
    console.log(c); // see what that gives ya.
  });
}

另一件事是,我不能在源或者collection.fetch需要一个附加选项,文档的任何地方找到。 如果我错过了,请让我知道,我想看看它结束了。

祝你好运,让我知道你发现了什么。 这可能是值得尾随通过通过调试一步了。

妈的,这让我觉得也该控制台经常向我展示了最先进的集合对象的最新版本时,它不应该有。

试着安慰了藏品的lenghts而不是什么:

var len = $this.Messages.length;
console.log(len);


//...
// or in the success callback
var len = collection.length;
console.log(len);


Answer 3:

主干1.0删除此功能,打破了依赖于这样的代码:

http://backbonejs.org/#Collection-fetch

与之比较:

“如果你想进入的车型加入,而不是替换集合的内容,目前收集,传递{补充:真}。作为一个选项,以获取”

http://htmlpreview.github.com/?https://raw.github.com/documentcloud/backbone/0.9.2/index.html#Collection-fetch

我建议恢复到旧版本的骨干,直到这个问题是固定的。



Answer 4:

在骨干网1.0,你必须手动触发复位:

youColloection.fetch({reset: true});


文章来源: Backbone collection fetch (add:true) does not update the collection