2017-01-21 6 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

プロパティタイプはNumberTimerangesではありません)である必要があります。

ポリマーのdata binding syntaxは、JavaScript(JavaScriptではない)でのみ使用できます。現在のコードでは、delayの代わりにsetTimeout()にリテラル文字列が渡されます。

あなたはこのようなthis.delayを使用することになり、setTimeout()があなたのポリマー・オブジェクト定義から呼び出されると仮定すると:

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

あなたはいつでもdelay変更と呼ばれるようにsetTimeout()が必要な場合は、このようなobserver使用します。

Polymer({ 
    properties: { 
    delay: { 
     type: Number, 
     value: 5000, 
     observer: '_delayChanged' 
    } 
    }, 
    _delayChanged: function(newDelay) { 
    setTimeout(function() {...}, newDelay); 
    } 
    // ... 
}); 
関連する問題