启动主干集合更改事件,但视图中没有任何更改
Backbone collection change event fires, but nothing changes in the view
我正在运行以下视图:
app.OrganisationTab = Backbone.View.extend({
el : "#organisations",
template : _.template( $("#tpl-groups-list").html() ),
events : {
"click .js-edit-group" : "editGroup"
},
initialize: function() {
this.listenTo(this.collection, 'change', this.change);
var that = this;
this.collection.fetch({
success: function() {
that.render();
}
})
},
change: function() {
//this.$el.empty();
console.log("collection has changed");
},
render:function() {
this.$el.empty();
this.addAll();
return this;
},
addAll: function() {
this.collection.each(this.addOne, this);
},
addOne: function(model) {
var view = new app.GroupEntry({
model: model
});
this.$el.append(view.render().el);
},
editGroup: function(e) {
e.preventDefault();
var elm = $(e.currentTarget),
that = this;
$('#myModal').on('hidden.bs.modal', function () {
$('.modal-body').remove();
});
var organisation = this.collection.findWhere({ id : String(elm.data('groupid')) });
var members = organisation.get('users');
organisation.set('members', new app.UserCollection(members));
var projects = organisation.get('projects');
organisation.set('projects', new ProjectCollection(projects));
var orgForm = new app.createOrganisationForm({
model : organisation,
});
$('#myModal').modal({
backdrop: 'static',
keyboard: false
});
}
});
这个视图触发了一个新的视图,这样我就可以更改模型并保存它(发送PUT),然后我就可以进入控制台collection has changed
。如果我console.log
这个集合,我可以看到集合已经更改。如果我尝试重新渲染页面,我看到的只是没有编辑的模型。
为什么会发生这种情况,当集合在触发事件时明显发生了更改,并且我在记录集合时可以看到它?
阅读您的评论后:
不抱歉集合更改,我尝试运行render(),它应该为空容器,并添加所有模型。。。但它似乎使旧再次收集。
出现此问题是因为您正在重写fetch
调用的success
处理程序。成功回调是在模型被放入集合之前触发的。如果要在集合与服务器同步后进行渲染,则需要侦听同步事件(模型在获取后更新)。
更新初始化为:
initialize: function() {
this.listenTo(this.collection, 'change', this.change);
this.listenTo(this.collection, 'sync', this.render);
this.collection.fetch();
},
相关文章:
- 有没有比在app.js上绑定模块名称更好的方法来动态加载视图模型和视图以显示模态
- (阅读更多链接)到模式淡入淡出视图
- 是否有任何事件“;在$scope摘要完成时”;或“;在视图刷新时”;在Angular.js中
- 如何从Node.js运行gullow任务-gullow.start()的任何更好的替代方案
- 可以'在使用Javascript/AjaxMVC之后,不会返回到任何视图
- Backbone js代码气味-嵌入子视图的更好方法
- Google Maps V3 fitBounds 在第二次调用具有相同边界时会缩放到更近的视图
- 优化javascript的任何更好的方法
- JavaScript JSON.任何更有效的方法
- Angularjs ng-include 不包括任何视图
- 我正在使用带有 c# 代码的 Asp.net,我有一个带有网格视图的页面,我想使用没有任何 ajax 的 javascr
- 使用角度剑道列表视图不显示任何结果
- 组合多个回调的任何更好方法
- 将值从第1页传递到第3页的任何更好的方法
- 找不到“”;应用程序“;模板或视图.任何东西都不会被渲染Emberjs RailsAPI
- 将脚本放置在layout视图或每个视图中更好
- Backbone js路由器-组织视图的更好方式
- 实时更新的Facebook页面点赞数-->任何更好的方式
- 在RTL模式下获得可滚动DIV的视图的更好方法
- 一次隐藏多个元素的任何更好方法