我正在構建一個使用骨幹網的web應用程序,並且在我的事件未正確綁定到相應對象的問題中繼續運行。如何以及何時使用.on或事件:{} with backbone
我正在使用骨幹結合qunit和sinon進行測試。 我想捕捉連接錯誤,如果他們正在作出。 我對骨幹集合的理解是,無論何時調用collection.create()
骨幹,都將通過集合將新模型保存到服務器,因此應調用"request"
,"sync"
或可能的"error"
事件。所以,在我的收藏我已經補充說:
var CProduct = Backbone.Collection.extend({
// Code
events : {
'sync' : 'success',
'error' : 'fail'
},
success : function()
{
console.log('success');
},
fail: function()
{
console.log('sync error');
},
// More code
});
在我的代碼一些其他的點,這是通過點擊一個按鈕觸發:
createProduct
{
alert('creating model');
var title = $('#title').val();
var description = $('#description').val();
this.collection.create({'title':title,'description':description});
}
當警報是檢查是否通過點擊這個特殊的事件是發射 和收集是CProduct集合。請注意,這是在包含該集合的視圖中。
我用興農僞造調用服務器並repley用下面的代碼:
module("Product models",{
setup: function(){
server = sinon.fakeServer.create();
},
teardown: function(){}
}
asyncTest("someTest", 1 , function(){
//Some preparation code
var test = function(eventData) {
console.log(eventData);
server.respond();
};
server.respondWith("GET", "/api/testmodel/1",[500,
{ "Content-Type": "application/json"}, JSON.stringify({"FAIL":"ERROR"})]);
//trying to make it fail
cproduct.on('request', test);
new ExpandProductFrom({'collection':cproduct});
}
但畢竟這既不是事件被觸發。所以在看了主幹api後,我發現.on
綁定事件對象。所以我代替events : {}
有:
initialize : function()
{
this.on('sync',this.success);
this.on('error',this.fail);
}
本作的成功運行的功能只有當我糾正了respondWith
功能。
回覆我的問題: 如何正確使用events:{}
或.on
函數?
謝謝
那麼問題是錯誤事件沒有被解僱,當我使它失敗 – Funonly