2017-01-21 85 views
1

我有一個聚合物性質定義爲:如何在setTimeout中綁定Polymer屬性?

properties: { 
    delay: { 
    type: Timeranges, 
    value: '5000' 
    } 
} 

而且我用這個屬性作爲這樣的超時:

setTimeout(function() { 
    request = ajax(request, custParams, inputValue.trim(), input, result, component.subType, component.queryParams); 
}, "{{delay}}"); 

但是,這是行不通的。如果我指定一個文字數字作爲函數參數而不是"{{delay}}",它可以正常工作。我如何在這裏綁定delay

回答

1

屬性類型應該是Number(而不是Timeranges)。

聚合物的data binding syntax只能用於HTML(不是JavaScript)。您當前的代碼將文字字符串傳遞到setTimeout()而不是數字值delay

假設setTimeout()從您的高分子對象定義調用,你可以使用this.delay這樣的:

Polymer({ 
    properties: { 
    delay: { 
     type: Number, 
     value: 5000 
    } 
    }, 
    foo: function() { 
    setTimeout(function() {...}, this.delay); 
    } 
}); 

如果您需要setTimeout()被稱爲每當delay變化,你可以使用一個observer這樣的:

Polymer({ 
    properties: { 
    delay: { 
     type: Number, 
     value: 5000, 
     observer: '_delayChanged' 
    } 
    }, 
    _delayChanged: function(newDelay) { 
    setTimeout(function() {...}, newDelay); 
    } 
    // ... 
});