2013-01-18 26 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/