主干集合视图添加未使用模型调用
Backbone collection View add not being called with a model
我有我的模型
var Client = Backbone.Model.extend({});
var Colony = Backbone.Collection.extend({
url: '/presence/knock',
model: Client
});
视图
var ClientView = Backbone.View.extend({
initialize: function(){
this.render();
},
template: _.template('...'),
render: function(){
this.$el.html(this.template(this.model.toJSON()));
return this;
}
});
var ColonyView = Backbone.View.extend({
initialize: function(){
_.bindAll(this, 'addOne', 'addAll');
this.collection.bind('add', this.addOne);
this.collection.bind('refresh', this.addAll);
this.collection.bind('change', this.addAll);
},
addOne: function(item){
console.log('addOne', item);
var view = new ClientView({
model: item
});
$(this.el).append(view.render().el);
},
addAll: function(){
var self = this;
this.collection.each(function(item){
self.addOne(item);
});
},
render: function(){
this.addAll();
return this;
}
});
我用/presence/knock
上的彗星更新了收藏.
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);
第一次渲染殖民地视图时,addOne
获取客户端作为参数,因为它通过 addAll 调用。 但是下次通过我在检查器中看到的事件调用add
addOne
时item
不是client
r{cid: "c606", attributes: Object, collection: r, _changing: false, _previousAttributes: Object...}
我想
出了你的问题。
这是您的代码的工作小提琴:http://jsfiddle.net/nilgundag/KbwHZ/
我使用 mockjax 来模拟服务器,它返回的内容如下:
[{
ip: '127.0.0.1',
name: 'localhost.localdomain',
lsup: 'now'
},
{
ip: '127.0.0.2',
name: 'localhost.localdomain',
lsup: 'now'
}]
既然你说你正在获取对象 {client: Array[1]},你的服务器可能返回:
[{
clients:[{
ip: '127.0.0.1',
name: 'localhost.localdomain',
lsup: 'now'
}]
}]
这是小提琴,它展示了您的情况:http://jsfiddle.net/nilgundag/TxZxp/
应将服务器代码更改为仅发送客户端数组,而不发送包含属性客户端和关联数组的对象。
相关文章:
- $rootScope未使用forEach进行更新
- 无法在现有状态转换期间更新-未使用任何非法的setState()
- 角度控制器未使用OcLazyLoad和ngRoute加载
- 绑定到 x 可编辑的成功函数未使用正确的参数执行
- 使用jQuery将单击绑定到页面中未使用的部分
- 未使用Javascript在IE中设置Cookie
- Ionic:AngularJS变量未使用$scope更新DOM
- 元素未使用当前玩家操作进行更新
- 将方法从控制器注入到未使用右变量调用的指令
- LinkedIn共享链接图片未使用自定义url更新
- 地图视图未使用PhoneGap加载
- 组件未使用ReactJS和React Router进行渲染
- 表单未使用 MVC 提交任何值 Asp.Net
- 短信未使用Branch.io和intl tel输入发送到intl号码
- 表列未使用tablesorter插件进行排序
- 主干集合视图添加未使用模型调用
- AngularJS-将模型绑定到未使用ng repeat创建的输入
- 主干模型未使用服务器数据更新
- 未使用Javascript,并且在提交带有附加模型的表单时出现对象引用错误
- 主干.js未使用更新的属性保存模型