Tôi muốn tìm cách để tăng backbone.js "sự kiện" mà không có thứ gì đó thay đổi trong mô hình hoặc trong dom.Tăng sự kiện Backbone.js Xem
Ví dụ: tôi đang tải SDK Facebook không đồng bộ. Tôi đã đăng ký sự kiện auth.login và muốn gửi thư đến chế độ xem của tôi rằng người dùng đã đăng nhập để có thể tự hiển thị lại chính xác.
Quan điểm của tôi trông giống như sau:
window.CreateItemView = Backbone.View.extend({
el: $('#content'),
initialize: function() {
this.render();
},
render: function() {
// do something
return this;
},
setSignedRequest: function(signedRequest) {
//do something with signedRequest
}
});
Trong mã facebook của tôi, tôi làm điều này:
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);
}
}
});
Tuy nhiên, trong khi window.view tồn tại, nó có thể không nhìn thấy phương pháp setSignedRequest. Tôi đã đảm bảo rằng các tập lệnh của tôi đang tải đúng thứ tự. Kỳ lạ tôi có cùng mã này trên một trang khác mặc dù một đối tượng View khác nhau và nó hoạt động tốt. Tôi đã không thấy bất kỳ sự khác biệt nào có thể giải thích cho điều này.
Một giải pháp tốt hơn là nâng cao một số loại sự kiện và có chế độ xem lắng nghe. Tuy nhiên, tôi không muốn sử dụng sự kiện thay đổi trên mô hình vì signedRequest không phải là thuộc tính của mô hình. Có cách nào tốt hơn để hoàn thành việc này không?
Vâng, có phương thức '.trigger()'. Bạn có thể làm cho chế độ xem của bạn nghe một sự kiện tùy chỉnh mà bạn sẽ kích hoạt sau này ... –