backbone.js를 require.js와 함께 사용하고 하나의 상위보기와 두 개의 하위보기를 보유합니다.많은보기에서 backbone.js의 공통 기본값 사용
ParentModel에 공통 기본값을 갖고 싶습니다. ParentView에서 기본값을 제어하고 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에서이 과실이 있습니까? 나는 무엇을 할까?
var Parent = new ParentView({model: model});
var Child_A = new ChildView_A({parent: Parent});
다음 chieldview에 당신이 할 수 있습니다 :