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 主干集合视图添加未使用模型调用_Javascript_Backbone.js_Underscore.js - Fatal编程技术网

Javascript 主干集合视图添加未使用模型调用

Javascript 主干集合视图添加未使用模型调用,javascript,backbone.js,underscore.js,Javascript,Backbone.js,Underscore.js,我有我的模特 var Client = Backbone.Model.extend({}); var Colony = Backbone.Collection.extend({ url: '/presence/knock', model: Client }); 观点 我在/presence/knock上用comet更新了集合 var colony = new Colony([{ ip: '127.0.0.1', name: 'localhost.localdom

我有我的模特

var Client = Backbone.Model.extend({});
var Colony = Backbone.Collection.extend({
    url: '/presence/knock',
    model: Client
});
观点

我在
/presence/knock
上用comet更新了集合

var colony = new Colony([{
    ip: '127.0.0.1',
    name: 'localhost.localdomain',
    lsup: 'now'
}]);
setInterval(function(){
    colony.fetch({
        update: true
    });
}, 5*1000);

var colonyView = new ColonyView({
    collection: colony
});
$("#clients-board").append(colonyView.render().el);
第一次呈现colonyview时,
addOne
获取一个客户机作为参数,因为它是通过addAll调用的。但下一次通过
add
调用
add
时,我在inspector
项目中看到的事件
不是
客户机

r{cid:“c606”,属性:对象,集合:r,_changing:false,_previousAttributes:Object…}


我想我解决了你的问题

下面是一个对您的代码进行操作的工具:

我使用mockjax来模拟服务器,下面是它返回的内容:

[{
    ip: '127.0.0.1',
    name: 'localhost.localdomain',
    lsup: 'now'
},
{
    ip: '127.0.0.2',
    name: 'localhost.localdomain',
    lsup: 'now'
}]
因为您说您正在获取对象{clients:Array[1]},所以您的服务器可能会返回:

[{
        clients:[{
                ip: '127.0.0.1',
                name: 'localhost.localdomain',
                lsup: 'now'
        }]
}]
下面是展示您案例的fiddle:


您应该将服务器代码更改为仅发送客户端数组,而不是包含属性客户端和关联数组的对象。

r{cid:“c606”,attributes:object,collection:r,_changing:false,_previousAttributes:object…}是从backbone.model扩展而来的模型对象。它可以是客户机模型的一个实例。也许您可以登录item.toJSON()来查看属性我认为您必须编写colony.fetch({update:true,remove:false})。如果没有删除,则不会为每个新模型触发“添加”事件@nilgundag我在addOne中选中了item.toJSON(),它是
对象{clients:Array[1]}
,这是一个殖民地(集合),谢谢。这也是我早上看到的。我重写了
parse
方法并返回了
clients
,现在问题是
collection.fetch{update:true}
没有正确合并。我正在使用
ip
字段,因为
idAttribute
是我的
Client
模型,但它仍然
add
s everything,而不是mergingvar Client=Backbone.Model.extend({idAttribute:“ip”});在小提琴中工作:是的,我看到它在工作。拉小提琴。我必须检查为什么它在实际场景中不起作用。ThanksIt实际上添加了所有内容,但它不符合id属性。我在上面贴了一个不同的问题,如果你能帮忙,那就太好了
[{
        clients:[{
                ip: '127.0.0.1',
                name: 'localhost.localdomain',
                lsup: 'now'
        }]
}]