2013-01-18 50 views
1

從Backbone.js中的「model」執行Ajax請求是否正確?從「路由器」更正確嗎? 我不使用RESTful for Backbone(由於其他原因)。當我說「做Ajax請求」時,我的意思是Ajax函數在模型中實現。該函數可以被調用(並且)在模型之外。在Backbone.js中執行來自模型的Ajax請求是否正確?

我的web應用程序不使用路由器(僅視圖和模型)。當我在應用程序中導航時,我不想在瀏覽器中使用網址路徑。會有什麼問題?

回答

5

你的路由器應該儘可能乾淨,所以絕對不會有。

在您的模型中,您可以定義模型的URL。

在您看來,您只需調用model.fetch()。

我使用(看)最常見的模式是這樣做:

var MyApp.myModel = Backbone.Model.extend({ 
    url: '/someResourceUrl' 
}); 

var MyApp.myView = Backbone.View.extend({ 
    initialize: function() { 
     this.model.bind("change",this.render,this); 
     this.model.fetch(); 
    }, 
    render: function() { 
     alert('do awesome stuff here'); 
    } 
}); 
+0

好的。但是Ajax請求......在哪裏? – vicenrele

+0

主幹在您調用fetch時自動處理ajax請求。 –

+0

好的。抱歉。我沒有評論說我不使用RESTful的Backbone(由於其他原因)。我在模型中實現了Ajax函數。 – vicenrele

1

這是正確的把AJAX請求的模型,因爲它是商業邏輯。這是根據一般的MVC原則以及Backbone.js的文檔:

「如果你的應用程序需要收集來自服務器的數據,本地存儲 ,餅乾等則模型正是這應該發生在。 事實上,例如,該模型是整個系統中唯一應該知道 有關XMLHttpRequest的任何地方。您可能在 模型圖層中有代碼,它爲您加載代碼並創建模型對象。 - http://michaux.ca/articles/mvc-architecture-for-javascript-applications

「模型 - 視圖 - 控制器(MVC)是一種軟件體系結構圖案,其 分離的從用戶的 與它相互作用信息的表示[1] [2]該模型由應用數據, 業務。規則,邏輯和功能。「 - http://en.wikipedia.org/wiki/Model%E2%80%93view%E2%80%93controller

「Backbone.Model - 類似於Rails模型,減去類方法,在業務邏輯中包含 行數據。」 - http://backbonejs.org/