Backbone.js Sync不会触发模型上的任何事件

Ram*_*yer 5 backbone.js

我有一个非常简单的设置......

设置一个路径,使用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命令中的警报永远不会被调用.尝试在模型中移动绑定,将其移出,也尝试同步:失败,同步:完成.没有成功.

fgu*_*len 4

不会触发任何事件,因为您没有这么说。您正在传递显式回调successerror回调,它们必须负责触发事件。

Backbone.sync来自高层命令的本机调用如savecreatefetchreceivesuccesserror回调这些触发事件,但您正在使用自己的命令,因此可以避免这种本机行为。

例如Model.saveModel.destroy等等。

但是,正如我在之前的评论中所说,您确实应该考虑是否确实需要Backbone.sync直接调用而不是使用更高层的方法,例如Model.fetch().