Polymer:this.setAttribute()不是函数

时间:2016-10-18 14:16:19

标签: javascript data-binding polymer

所以我试图让一些Polymer数据绑定工作但是出于某种原因,下面的代码给了我一个TypeError: this.setAttribute is not a function(…)

我已尝试将this.setAttribute('display', 1);替换为this.display = 1;,但这似乎也无效。

我做错了什么?

Polymer({
  is: 'unibz-club',

  properties: {
    display:{
      type: Number,
      notify: true,
      value: 0,
    }
  },
  ready: function() {
    this.setAttribute('display', 1);    //  <--not working
  }.bind(this),
};

1 个答案:

答案 0 :(得分:0)

'ready'方法已经有一个this上下文,它引用了实例化的Polymer对象。现在,您正在通过.bind(this)调用将上下文更改为窗口或包含闭包。

Polymer库正在为您处理此问题。它将在新创建的对象的上下文中调用“ready”方法。

您通常会使用.bind()来定义回调方法中的this的上下文以及当时的承诺。当然还有其他用途,但这在我的经历中最为常见。

function ImageLoader () {
    return this;
}

ImageLoader.prototype.load = function(path) {
    return ajaxService.get(path);    
};

function Gallery () {
    this.images = [];
    return this;
}

Gallery.prototype.init = function() {
    new ImageLoader().load('/photos/gallery').then(function(result) {
        this.images = result; 
    }.bind(this)); // <-- .bind(this) will set the context of `this` to the Gallery instance
};

var gallery = new Gallery();
gallery.init();