子主干视图如何能够访问其父视图特定属性而无需传递整个'这个'作为父母

时间:2014-04-08 13:45:25

标签: 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.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'参数作为父子传递

1 个答案:

答案 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引用。