【发布时间】:2012-04-30 23:57:02
【问题描述】:
如果我使用 Backbone,其中哪一种(或两者)是设置数据的“正确”方式?
// Logic in the Model
// Can call from anywhere that has access
SomeModel = Backbone.Model.extend({
defaults: {
visible: false
},
toggle: function(visible){
visible = typeof visible !== "undefined" ? visible : !this.get("visible");
this.set({visible: visible});
}
});
或
// Logic in the View
SomeView = Backbone.View.extend({
events: {
"click .toggle" : "toggleVisibility"
},
toggleVisibility: function(){
this.model.set({visible: !this.model.get("visible")});
}
});
显然其中任何一个都有效,但我的问题是应该将多少逻辑推到模型中?例如,如果我有更新两个变量的情况:
this.model.set({visible: false, foo: bar, something: else});
在模型上创建这样的函数是否有意义:
someFunction: function(visible, foo, something){
this.set({visible: visible, foo: foo, something: something});
}
这对我来说似乎有点矫枉过正,但视图中的 set({}) 逻辑感觉很脏。
想法?
【问题讨论】:
标签: javascript model-view-controller design-patterns backbone.js