Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/467.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 主干集合.fetch({update:true})不';t比较id add';又是同一型号了_Javascript_Backbone.js - Fatal编程技术网

Javascript 主干集合.fetch({update:true})不';t比较id add';又是同一型号了

Javascript 主干集合.fetch({update:true})不';t比较id add';又是同一型号了,javascript,backbone.js,Javascript,Backbone.js,关于我的另一个问题 我有我的模特 var Client = Backbone.Model.extend({ idAttribute: 'ip' }); var Colony = Backbone.Collection.extend({ url: '/presence/knock', model: Client }); 我也试过了 var Client = Backbone.Model.extend({ ipAttribute: function(){

关于我的另一个问题

我有我的模特

var Client = Backbone.Model.extend({
    idAttribute: 'ip'
});
var Colony = Backbone.Collection.extend({
    url: '/presence/knock',
    model: Client
});
我也试过了

var Client = Backbone.Model.extend({
    ipAttribute: function(){
        return this.options.ip
    }
});
我还尝试使用
id
属性,而不是使用
ip
。但什么都不管用。似乎主干正在比较整个对象如果两个对象完全相同,则不会触发添加,但是如果有任何不在idAttribute中的更改,则仍然认为模型是新的,并触发添加

我对使用模拟ajax(基于我几天前提出的上述问题的解决方案)的方法有点不了解

如果有任何变化不在idAttribute中,则仍然认为 该模型是新的,并添加了触发器

在fiddle中的代码中,您还将集合的“change”事件绑定到“addAll”函数

如果对这一行进行注释,代码将按预期工作

下面是它现在的工作原理: 当调用第一个提取函数时,将为ip为“127.0.0.2”的项触发“添加”事件,并为ip为“127.0.0.1”的项触发“更改”。当第二次调用fetch函数时,将为这两个项触发“更改”事件。对于每个连续的获取调用,将为两个项目触发“更改”事件。(旁注:刷新事件根本不触发)


您可以编写另一个方法来处理“更改”事件,并在该方法中更新现有html元素以反映更新。

是,对不起。它应该是IDattribute。你能确保你后端的“ip”是唯一的吗?是的,它们是唯一的。你可以在小提琴上看到。使用mockajax
ip
是独一无二的。
this.collection.bind('change', this.addAll);