Polymer 如何在setTimeout中绑定聚合物属性?
我的聚合物属性定义为:Polymer 如何在setTimeout中绑定聚合物属性?,polymer,Polymer,我的聚合物属性定义为: properties: { delay: { type: Timeranges, value: '5000' } } 我使用这个属性作为超时,如下所示: setTimeout(function() { request = ajax(request, custParams, inputValue.trim(), input, result, component.subType, component.queryParams); }, "{{delay
properties: {
delay: {
type: Timeranges,
value: '5000'
}
}
我使用这个属性作为超时,如下所示:
setTimeout(function() {
request = ajax(request, custParams, inputValue.trim(), input, result, component.subType, component.queryParams);
}, "{{delay}}");
Polymer({
properties: {
delay: {
type: Number,
value: 5000
}
},
foo: function() {
setTimeout(function() {...}, this.delay);
}
});
Polymer({
properties: {
delay: {
type: Number,
value: 5000,
observer: '_delayChanged'
}
},
_delayChanged: function(newDelay) {
setTimeout(function() {...}, newDelay);
}
// ...
});
但这是行不通的。如果我指定一个文字数字作为函数参数,而不是
“{{delay}}”
,那么它可以正常工作。如何在此处绑定delay
?属性类型应为Number
(而不是Timeranges
)
Polymer只能在HTML(而不是JavaScript)中使用。当前代码将文本字符串传递给setTimeout()
,而不是delay
的数值
假设从聚合对象定义中调用了setTimeout()
,您将使用this.delay
如下:
setTimeout(function() {
request = ajax(request, custParams, inputValue.trim(), input, result, component.subType, component.queryParams);
}, "{{delay}}");
Polymer({
properties: {
delay: {
type: Number,
value: 5000
}
},
foo: function() {
setTimeout(function() {...}, this.delay);
}
});
Polymer({
properties: {
delay: {
type: Number,
value: 5000,
observer: '_delayChanged'
}
},
_delayChanged: function(newDelay) {
setTimeout(function() {...}, newDelay);
}
// ...
});
如果需要在delay
更改时调用setTimeout()
,则可以使用如下方法:
setTimeout(function() {
request = ajax(request, custParams, inputValue.trim(), input, result, component.subType, component.queryParams);
}, "{{delay}}");
Polymer({
properties: {
delay: {
type: Number,
value: 5000
}
},
foo: function() {
setTimeout(function() {...}, this.delay);
}
});
Polymer({
properties: {
delay: {
type: Number,
value: 5000,
observer: '_delayChanged'
}
},
_delayChanged: function(newDelay) {
setTimeout(function() {...}, newDelay);
}
// ...
});