モデルやDOMで何か変更されていないbackbone.jsの "イベント"を発生させる方法を見つけたいと思います。Backbone.jsのViewイベントを呼び出す
例えばFacebook SDKを非同期に読み込んでいます。私はauth.loginイベントを購読しており、ユーザーがログインしているビューにメッセージを送信して、自分自身を適切に再レンダリングできるようにしたいと考えています。
私の見解は次のようになります。私のFacebookのコードで
window.CreateItemView = Backbone.View.extend({
el: $('#content'),
initialize: function() {
this.render();
},
render: function() {
// do something
return this;
},
setSignedRequest: function(signedRequest) {
//do something with signedRequest
}
});
、私はこれを実行します。
FB.Event.subscribe('auth.login', function(response){
if (response.status === 'connected') {
var uid = response.authResponse.userID;
var accessToken = response.authResponse.accessToken;
window.signedRequest = response.authResponse.signedRequest;
if (window.view && window.view.setSignedRequest) {
window.view.setSignedRequest(window.signedRequest);
}
}
});
をしかし、window.viewが存在している間、それはsetSignedRequest方法を見ることができません。スクリプトが正しい順序でロードされていることを確認しました。不思議なことに、別のViewオブジェクトでも同じコードが同じページにあり、うまく動作します。私はこれを説明する違いを見ていない。
より良い解決策は、何らかの種類のイベントを発生させ、その見解を聞くことです。しかし、signedRequestはモデルのプロパティであってはならないため、モデル上でchangeイベントを利用したくありません。これを達成するより良い方法はありますか?
まあ、 '.trigger()'メソッドがあります。後でトリガーするカスタムイベントを視聴することができます。 –