我想找到一種方法來提升backbone.js「事件」,而不需要在模型或dom中進行任何更改。提高Backbone.js查看事件
例如,我正在異步加載Facebook SDK。我訂閱了auth.login事件,並想發送消息給我的視圖,即用戶已登錄,因此可以適當地重新呈現自己。
我的觀點看起來與此類似:
window.CreateItemView = Backbone.View.extend({
el: $('#content'),
initialize: function() {
this.render();
},
render: function() {
// do something
return this;
},
setSignedRequest: function(signedRequest) {
//do something with signedRequest
}
});
在我的facebook代碼,我這樣做:
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方法。我確保我的腳本按正確順序加載。奇怪的是,我有不同的頁面上的這個相同的代碼,儘管它是一個不同的視圖對象,它工作正常。我沒有看到任何可以解釋這一點的差異。
更好的解決辦法是提出某種事件並讓視圖監聽它。但是,我不想在模型上使用更改事件,因爲signedRequest不應該是模型的屬性。有沒有更好的方法來完成這個?
那麼,有'.trigger()'方法。您可以讓您的視圖聽取自定義事件,稍後您可以觸發該事件... – 2012-02-19 16:07:53