从回调中访问聚合物组件属性?

时间:2016-09-13 17:26:36

标签: javascript callback polymer

使用这种聚合物元素定义:

<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实际上是数据,而不是元素。我希望它设置聚合物属性&#34;值&#34;到z的值。我怎么能这样做?

如果需要,这是registerCallback()

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

1 个答案:

答案 0 :(得分:3)

有两种方法可以做到这一点

  • 正如您所知,thiscallback中有不同的含义,因此一种方法是将this(Polymer元素)存储在其他变量中

    var self=this;
    registerCallback(function(){
       self.data = some value
    })
    
  • 第二个选项是使用您的回调<{1}} bind

    this