Backbone JS将应用程序主逻辑放在哪里



使用Backbone,我开始构建一个应用程序,在那里我可以将所有东西干净地分离。但现在我有以下问题。我应该把应用程序主逻辑放在哪里,放在视图或模型中。例如,我有一个视图和一个模型,它们被绑定到一个按钮上,当我点击该按钮时,我必须制作

$.ajax(params)  

我是把它放在视图中,还是视图调用一个带有的方法

this.model.doAction(params) 

你认为哪种方法是最好的?

您可以在视图中定义events属性,其格式为{"event selector": "callback"},例如{"click .collapse": "collapse"},其中塌陷将是定义为视图属性的函数。然后在这个回调函数中编写ajax请求代码。

此外,除非我遗漏了什么,否则"将视图和模型绑定到按钮"对我来说听起来并不正确。相反,你应该想到一个模型实例与视图的一个实例相关联。每当模型实例的属性发生更改时,就会触发一个模型change事件。您可以将视图函数绑定到此事件,以便在视图中反映模型中的更改。以下是的一个快速示例

var Book = Backbone.Model.extend({
// ...
});
var BookView = Backbone.View.extend({
initialize: function () {
this.model.bind('change', this.render, this);
},
render: function () {
// here, make changes to the dom as per changes in model
}
});

要将模型与视图实例相关联,可以在实例化新视图实例时传递它查看对象。。

var book = new Book({
title: "A great book"       
});
var view = new BookView({model: book});
view.model.set('author', 'AGreatAuthor');

set函数调用将引发更改事件,并将导致视图的渲染函数待调用。

有关完整示例,请参阅Todos应用程序示例的注释源代码。

最新更新