集合添加事件在视图初始化时触发
collection add event firing on view initialisation
我的主干应用程序中有这段代码,
createNewProject: function(e) {
e.preventDefault();
this.createNewProject = new app.CreateNewProject({
collection: this.dropdownListProjectCollection
});
}
app.CreateNewProject = Backbone.View.extend({
el: '.modal',
template: _.template( $("#tpl-create-new-project").html() ),
events: {
'click input[type="submit"]' : 'saveBasicProject'
},
initialize: function() {
this.collection.on("add", console.log("added"));
this.$el.find("h4").text("Create new project");
this.$el.find(".modal-body").html( this.template() );
this.render();
return this;
},
我试图检测何时将模型添加到集合中,然后最终触发一个方法来呈现该新记录。但是,我遇到的问题是,this.collection.on('add'...
)似乎在视图初始化时运行,当保存模型时再次运行,我如何才能仅在保存模型时运行该方法,而不是初始化视图。
我建议您在视图中执行this.listenTo(this.collection, ...
,因为当视图被删除时,它将删除事件并避免内存泄漏。
add事件将在集合上的每个.set
上触发。如果您在集合初始化上传递模型,这将发生ctor -> reset -> add -> set
以添加这些模型,因此您将获得reset
和add
事件。
没有任何意义的是,你的集合应该在你初始化视图之前初始化,所以我不知道为什么你得到那个事件,除非你随后添加更多的模型。
要监听保存事件,您可以在集合上使用这些事件:
request
-当请求开始时sync
-当请求成功发生时error
-出错
PS这是this.$el.find
-> this.$('.someselector')
的快捷方式
相关文章:
- 正在Ajax调用上初始化主干视图
- 如何使用搜索筛选器初始化列表视图
- angularJS视图更新后初始化引导工具提示
- Ember.js - 在车把内初始化的视图中调用方法
- BackboneJS:集合初始化在视图模块中只有一个模型
- 调用 Backbone 内部的外部函数.js的视图初始化方法
- 将模型实例传递到已初始化的主干视图
- 无法初始化主干.js视图
- Backbone.Layoutmanager 尝试初始化视图时出错
- 如何在视图中呈现部分 js 或访问在应用程序/资产中的 js.erb 文件中的控制器操作中初始化的实例变量/方法
- ng视图-如何禁用页面的重新初始化
- JQuery Full Calendar-初始化后编辑日历视图
- 为什么此主干视图未初始化
- JQuery移动列表视图筛选器初始化
- 角度范围数据在更新时不绑定到视图,但在初始化时绑定
- 在Backbone.js中,通过在选项中传递模型来初始化视图和将模型对象作为参数传递有什么区别
- 如何使用.ajax数据初始化knockoutjs视图模型
- 在Angular中,如何重新初始化视图'控制器中的$scope变量?
- 用Rails后端在Angular中初始化视图渲染
- 使用主干获取成功回调在初始化视图之前更改数据