2017-02-10 36 views
1

У меня есть код, как это в моем приложении:Наблюдатели: следует ли использовать значения, переданные функции, или я могу использовать this.value безопасно вместо этого?

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 нет. Однако я не могу его воспроизвести - извините.

Вопросы:

  • ли это всегда рекомендуется использовать значения, передаваемые функции, а не this.*?
  • КОГДА может случиться так, что subValue задан как параметр функции, но НЕ в this.value.subValue?

ответ

0

AFAIK вы должны всегда явно объявлять и использовать зависимость, которые вы хотите получить доступ в наблюдателе, вместо того, чтобы использовать this, потому что, как вы опытный this.myVar не может быть установлен в то время как параметр функции наблюдателя myVar есть.

По крайней мере, это был официальным response от разработчиков полимеров. (Там может быть еще несколько issues относительно этого)

Это относится к Polymer 1 не уверен, если это отличается для полимеров 2.x

+0

Фантастика. Благодарю. – Merc