Javascript 子主干视图如何在不传递完整';这';作为父母
我有一个主要的家长观点Javascript 子主干视图如何在不传递完整';这';作为父母,javascript,backbone.js,Javascript,Backbone.js,我有一个主要的家长观点 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
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
}
});
如何确保子视图中的this.aa始终在父视图中获取当前可用值
这背后的主要原因是什么?我正在将“a”的“reference”传递给子视图。因此,子视图应始终具有来自父视图的更新值。但为什么这不会发生呢
我也不想将整个“this”参数作为父级传递给子级您必须创建一个对象并在父级和子级之间共享引用
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引用。我在问题中说过,我不想将整个“this”作为父级传递给子级。我会重写答案,好的,这个很好,。。但我的方法失败的主要原因是什么?我正在将“a”的“reference”传递给子视图。因此,子视图应始终具有来自父视图的更新值。但是为什么不发生这种情况呢?当您传递字符串的引用时,字符串以及java都是不可变的。obj.a='Ami',您正在将另一个引用放入父对象中。孩子仍然会引用旧的引用。