5

セットアップはとても簡単です...

ルートは、ブートストラップを使用してモーダルダイアログを呼び出すセットアップです。headerViewは、メニューがクリックされたときにメソッドを呼び出します-

menuClick: function(e){
    e.preventDefault();
    if (!this.myView) {
        this.myView= new MyView({model: new MyModel()});
    }
    this.myView.render();
},

MyViewでは、初期化でbindを呼び出します

initialize: function(){
    this.model.bind('sync', function(model){ alert('test view')});
}

そして、ボタンクリックイベントでBackbone.syncを呼び出します。

var response = Backbone.sync('read', this.model, {
    success: function(data, textStatus, jqXHR) { alert('success'); },
    error: function(data, textStatus, jqXHR){ alert(fail); }
});

同期内のアラートが呼び出されます...ただし、初期化のbindコマンドのアラートが呼び出されることはありません。モデル内でバインドを移動し、モデルを移動してみました。また、sync:fail、sync:doneも試しました。失敗。

4

2 に答える 2

4

あなたがそう言わなかったので、イベントはトリガーされません。イベントのトリガーを担当する必要がある明示的なコールバックをsuccess渡しています。error

イベントをトリガーする、、receiveおよびcallbacks などBackbone.syncの高層コマンドからのネイティブ呼び出しですが、独自のものを使用しているため、このネイティブ動作は不要です。savecreatefetchsuccesserror

たとえばModel.save、などですModel.destroy

しかし、以前のコメントで述べたBackbone.syncように、Model.fetch().

于 2012-05-15T11:48:17.147 に答える
2

次のように Backbone.sync を実装してみてください。

var sync = Backbone.sync;
Backbone.sync = function (method, model, options) {
    var success = options.success;
    options.success = function (resp, status, xhr) {
        //Your logic goes here
        console.log('succeed');
        if (success) success(resp, status, xhr);
    };
    options.error = function (xhr, ajaxOptions, thrownError) {
        console.log('failed');
    }
    sync(method, model, options);
};
于 2012-05-15T02:30:03.440 に答える