Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/backbone.js/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 子主干视图如何在不传递完整';这';作为父母_Javascript_Backbone.js - Fatal编程技术网

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',您正在将另一个引用放入父对象中。孩子仍然会引用旧的引用。