我有一个骨干父视图
var ParentView = Backbone.View.extend({
a : 'apple',
b : 'boy',
c : 'cat',
changingA : function() {
this.a = 'Ami'
},
createChild = function() {
new ChildView({a : this.a});
}
});
和子视图
var ChildView = Backbone.View.extend({
intialize : function(args) {
this.aa = args.a;
},
someOperation : function() {
console.log(this.aa); // this is not the current 'a' value of parent.
//here i always get 'apple' even if i change the value of 'a' in parent
}
});
如何确保child中的this.aa始终在父视图中获取当前可用值。
背后的主要原因是什么?我将'a'的'引用'传递给子视图。因此,子视图应始终具有父级的更新值。但为什么这不会发生?
我也不想将整个'this'参数作为父子传递
答案 0 :(得分:1)
您必须创建一个对象并共享父和子之间的引用
var ParentView = Backbone.View.extend({
obj: {
a : 'apple',
b : 'boy',
c : 'cat'
},
changingA : function() {
this.obj.a = 'Ami'
},
createChild = function() {
new ChildView({obj : this.obj});
}
});
var ChildView = Backbone.View.extend({
intialize : function(args) {
this.obj = args.obj;
},
someOperation : function() {
console.log(this.obj.a); // this is not the current 'a' value of parent.
//here i always get 'Apple' even if i change the value of 'a' in parent
}
});
但是要小心,此对象引用也在“ParentView”的实例之间共享,以绕过此问题,在构造函数内创建obj引用。