如果我使用 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({}) 逻辑感觉很脏。
想法?