所以我试图让一些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),
};
答案 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();