2016-09-13 5 views
0

С помощью этого определения элемента полимера:Доступ к свойствам полимерных компонентов от обратного вызова?

<script> 
    Polymer({ 
     is: 'hello-world', 
     properties: { 
      dataId: { 
       type: String 
      }, 
      value: { 
       type: String 
      } 
     }, 
     ready: function() { 
      console.log(this.dataId); 
      registerCallback(this.dataId, function (data) { 
       var z = data.someValue; 
       this.value = z; 
      }); 
     } 
    }); 
</script> 

Когда он пытается установить this.value, this на самом деле данные, а не элемент. Я хочу, чтобы он установил значение свойства «значение» полимера в значение z. Как я могу это сделать?

Вот registerCallback() при необходимости:

function registerCallback(id, callback) { 
    callbackMap[id] = callback; 
} 

ответ

2

Есть два способа сделать это

  • Как вы уже знаете this имеет другое значение внутри callback так один из способов будет магазин this (полимерный элемент) внутри какой-либо другой переменной

    var self=this; 
    registerCallback(function(){ 
        self.data = some value 
    }) 
    
  • Второй вариант заключается в bindthis с обратным вызовом

    registerCallback(function(){ 
        this.data= some value 
    }.bind(this)); 
    
Смежные вопросы