Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/386.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/backbone.js/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 主干集合提取(添加:true)不会更新集合_Javascript_Backbone.js_Underscore.js - Fatal编程技术网

Javascript 主干集合提取(添加:true)不会更新集合

Javascript 主干集合提取(添加:true)不会更新集合,javascript,backbone.js,underscore.js,Javascript,Backbone.js,Underscore.js,集合未更新。此函数完成后,将触发事件,并在屏幕上绘制新项目。问题是集合没有添加新模型。主干网。集合。获取() 这里的内容是,传入函数被分配给var succees collection[方法](分别,选项),在您的情况下,方法是“重置” collection.reset必须完成并添加所有模型,同时触发所有事件。我不知道到底发生了什么,但它经历了收集、重置、收集、添加、模型、添加、等等……我没有完全理解 我不确定到底是什么问题,对此我很抱歉。我希望我至少能帮你尝试一些东西,这样也许我们能找到答案。

集合未更新。此函数完成后,将触发事件,并在屏幕上绘制新项目。问题是集合没有添加新模型。

主干网。集合。获取()

这里的内容是,传入函数被分配给
var succees

collection[方法](分别,选项),在您的情况下,方法是
“重置”

collection.reset
必须完成并添加所有模型,同时触发所有事件。我不知道到底发生了什么,但它经历了
收集、重置
、收集、添加
模型、添加
、等等……我没有完全理解

我不确定到底是什么问题,对此我很抱歉。我希望我至少能帮你尝试一些东西,这样也许我们能找到答案。行
if(success)success(收集、响应、选项)
是对succes函数的调用。您可以尝试让成功回调接受传递回的参数,并对这些参数进行一些安慰:

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);
},
另一件事是,我在源代码或文档中找不到collection.fetch使用add选项的任何地方。如果我错过了,请让我知道我想看一下

祝你好运,让我知道你发现了什么。也可能值得使用一个逐步调试程序进行跟踪

妈的,控制台经常向我展示最新版本的集合对象,而它本不应该这样做

试着安慰一下集合的长度,或者做些什么:

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.
  });
}

主干网1.0删除了此功能,破坏了依赖于此的代码:

与之相比:

如果要将传入模型添加到当前集合中,而不是替换集合的内容,请将{add:true}作为获取选项传递


我建议恢复到旧版本的主干网,直到此问题得到解决。

如前一个回答中所述,
添加
选项在1.0.0中被删除。您可以通过传递
remove:false
来完成相同的任务。从

通过使用可用的集合,可以自定义提取行为 选项。例如,要获取集合,请获取“添加”事件 对于每个新模型,以及对于每个已更改的现有模型的“更改”事件 模型,不删除任何内容:
collection.fetch({remove:false})


在主干网1.0中,您必须手动触发重置:

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


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

您是否验证了get调用中确实返回了数据?您是否只在
$this.Messages
中查找
成功
回调中新添加的模型?如果是这样,您确定在调用
success
时,集合已经解析了响应并将其添加到集合中了吗?
var len = $this.Messages.length;
console.log(len);


//...
// or in the success callback
var len = collection.length;
console.log(len);
youColloection.fetch({reset: true});