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);
  }
  // ...
});