Я хотел бы найти способ поднять backbone.js "событие" без изменения в модели или в dom.
Например, я загружаю SDK Facebook асинхронно. Я подписался на событие 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. Я гарантировал, что мои скрипты загружаются в правильном порядке. Странно, что у меня есть тот же код на другой странице, хотя и у другого объекта View, и он отлично работает. Я не видел никакой разницы, которая могла бы объяснить это.
Лучшим решением было бы поднять какое-то событие и послушать его. Однако я не хочу использовать событие изменения для модели, поскольку signedRequest не должен быть свойством модели. Есть ли лучший способ сделать это?