观察者:我应该使用传递给函数的值,还是可以安全地使用this.value?

时间:2017-02-10 04:18:51

标签: polymer web-component observers

我的应用中有这样的代码:

  observers: [
    '_dataGenericObserver(userData.generic)',
  ],

  // If this.userData.generic.id is set, then the register tab is
  // NOT visible. In this case, the selected tab mustn't be "register"...
  _dataGenericObserver: function(){
    if (this.userData.generic.id){
      this.selected = 'login';
    } else {
      if (this.defaultRegister) {
        this.selected = 'register';
      } else {
        this.selected = 'login';
      }
    }
  },

这样安全吗?或者我应该总是这样做:

  observers: [
    '_dataGenericObserver(userData.generic)',
  ],

  // If this.userData.generic.id is set, then the register tab is
  // NOT visible. In this case, the selected tab mustn't be "register"...
  _dataGenericObserver: function(generic){
    if (generic.id){
      this.selected = 'login';
    } else {
      if (this.defaultRegister) {
        this.selected = 'register';
      } else {
        this.selected = 'login';
      }
    }
  },

...? 在某些情况下,我注意到应用程序的其他部分,如果我在_someFunc(value.subvalue)上有一个观察者,然后有_someFunc: function( subValue),则在subValue函数中设置,而this.value.subValue ISN'吨。但是,我无法复制它 - 抱歉。

问题:

  • 是否始终建议使用传递给函数的值,而不是this.*
  • 可能会发生,subValue被设置为函数参数,但不在this.value.subValue

1 个答案:

答案 0 :(得分:0)

AFAIK您应该始终显式声明并使用您想要在观察者中访问的依赖项,而不是使用this,因为您可能没有在this.myVar参数中设置myVar观察者功能是。

至少这是Polymer开发人员的官方response。(关于此可能会有更多issues

这适用于Polymer 1.x,不确定Polymer 2.x

是否不同