Backbone JS在哪里放置Application主逻辑

时间:2012-12-08 03:02:46

标签: model-view-controller web-applications backbone.js

使用Backbone我开始构建一个应用程序,我将所有内容完全分开。但现在我有以下问题。我应该把App主逻辑放在视图中还是放在模型中。 例如,我有一个视图和一个模型,绑定到一个按钮,当我点击该按钮,我必须做

$.ajax(params)  

我把它放在视图中,或者视图调用方法:

this.model.doAction(params) 

您认为哪种方法最好?

1 个答案:

答案 0 :(得分:0)

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

此外,除非我遗漏了某些内容,“将视图和模型绑定到按钮”对我来说听起来不是正确的Backbone方式。相反,您应该考虑与视图的一个实例关联的一个模型实例。只要模型实例的属性发生更改,就会触发模型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函数调用将触发change事件并将导致视图的渲染功能 被称为。

有关完整示例,请参阅annotated source of Todos应用示例。