我與同事對路由器的責任存在分歧。我們內部單頁的應用程序,這是我印象中有網絡請求(AJAX)通過事件來處理被觸發(即Backbone.Events),像這樣:路由器是否應負責網絡請求? (Backbone.js)
events : {
'click a#getUsers' : 'updateModels'
}
updateModels: function() {
$.ajax(); or this.Model.fetch();
}
然而,這是他了解,網絡請求應處理通過對URL更改路由器(根據點擊它的URL改變了像a[href="#getThings"]
像這樣:
var App = Backbone.Router.extend({
routes: {
"" : "main",
"thing" : "getThings"
}
getThings: function() {
this.newView = new NewView();
$.ajax(); // which populates the view with data
}
});
我想知道骨幹原因是什麼做的網絡請求
感謝極大幫助的解答。我知道$ .ajax()函數調用並不是最優的,但是在API中返回的json並不是最優的,因爲它返回了一些我不一定想要污染我的模型的東西。 – iggy2012
我的方法是執行$ .ajax()請求,並在成功回調中實例化和設置我的模型。我的理解是Backbone.fetch()請求只是簡單地將返回的json對象轉換爲模型的一個實例,並且通常不需要返回的所有鍵/值對從API返回的JSON對象。 – iggy2012
重寫模型/集合中的'parse'方法以將服務器JSON響應轉換爲主幹兼容形狀。 –