1

「アーティスト」と呼ばれる 1 つのバックボーン モデルと、「artistView」と呼ばれる 1 つのバックボーン ビューを作成しました。Chrome devtools ネットワーク タブで確認できるように、モデルを正常にフェッチしました。

ただし、フェッチはその時点で「変更」イベントを発生させませんでした。奇妙なことに、モデルを作成したときに「変更」イベントが発生しましたが、これをフェッチしたときは発生しませんでした...

fetch() メソッドで成功コールバックを使用できますが、これは最も適切な方法ではないと感じています。何か案が ?

モデルとビューの初期化:

var artist = new Artist({id: 3});
var artistView = new ArtistView({model: artist});

次に、モデルをフェッチします。

artist.fetch();

私のバックボーン ビュー クラスでは、モデルからの「変更」イベントをリッスンします。

var ArtistView = Backbone.View.extend({

    initialize: function() {
        this.model.on("change", this.test());
    },

    test: function() {
        console.log(this.model.get("name"));
    }
});

編集:「同期」イベントも機能していません。モデルを作成すると、「同期」イベントが発生しますが、モデルが正常にフェッチされた場合は発生しません。

4

2 に答える 2

0

問題は、イベント リスナーから発生しました。実際には、コンテキストを考慮していませんでした。

解決策は次のとおりです。

this.model.on("sync", this.test, this);

そしてそうではない

this.model.on("sync", this.test());
于 2013-05-29T15:36:57.467 に答える