我有一个非常简单的设置......
设置一个路径,使用bootstrap调用模式对话框.单击菜单时headerView调用方法 -
menuClick: function(e){
e.preventDefault();
if (!this.myView) {
this.myView= new MyView({model: new MyModel()});
}
this.myView.render();
},
Run Code Online (Sandbox Code Playgroud)
在MyView中,我在初始化中调用bind
initialize: function(){
this.model.bind('sync', function(model){ alert('test view')});
}
Run Code Online (Sandbox Code Playgroud)
并在按钮单击事件中调用Backbone.sync:
var response = Backbone.sync('read', this.model, {
success: function(data, textStatus, jqXHR) { alert('success'); },
error: function(data, textStatus, jqXHR){ alert(fail); }
});
Run Code Online (Sandbox Code Playgroud)
同步内的警报被调用...但是初始化中的bind命令中的警报永远不会被调用.尝试在模型中移动绑定,将其移出,也尝试同步:失败,同步:完成.没有成功.
不会触发任何事件,因为您没有这么说。您正在传递显式回调success和error回调,它们必须负责触发事件。
Backbone.sync来自高层命令的本机调用如save、create、fetchreceivesuccess和error回调这些触发事件,但您正在使用自己的命令,因此可以避免这种本机行为。
例如在Model.save,在Model.destroy等等。
但是,正如我在之前的评论中所说,您确实应该考虑是否确实需要Backbone.sync直接调用而不是使用更高层的方法,例如Model.fetch().