我将backbone.js 与require.js 一起使用,并且有一个父视图和两个子视图。
我想在 ParentModel 中有共同的默认值,有共同的逻辑来控制 ParentView 中的默认值并从子视图中调用 ParentView 逻辑。代码在这里。
父视图.js
define(
['jquery', 'underscore', 'backbone', 'models/parentModel'],
function($, _, Backbone, ParentModel) {
var ParentView = Backbone.View.extend({
model: new ParentModel(),
initialize: function() {
this.model.on("change:hoge", this.switchHoge);
},
parentSet: function(k, v) {
// context is childen model
// want to set parent model
this.model.set(k, v);
},
switchHoge: function(k, v) {
if (this.model.get("view") == "A") {
console.log("aaaaaaaaaaaa");
} else if (this.model.get("view") == "B") {
console.log("bbbbbbbbbbbb");
}
}
});
return ParentView;
}
);
childView_A
var ChildView_A = ParentView.extend({
model: new ChildModel_A(),
change: function() {
this.parentSet("hoge", "A");
}
}
childView_B.js
var ChildView_B = ParentView.extend({
model: new ChildModel_B(),
change: function() {
this.parentSet("hoge", "B");
}
});
parentSet 上下文被子模型替换是一个问题。所以绑定在 ParentView 中的函数不会被调用。
如果我将 ParentView:model 重命名为 ParentView:another_model,我可以解决这个问题。
但似乎并不美丽。
这是 Backbone.js 中的不良做法吗?我该怎么办?