result
times
や と同じように、要素のプロパティvalue
です。通常の HTML 要素のプロパティと同様に、JS の外部からアクセスできます。例えば:
<value-box value="2" times="10"></value-box>
<script>
document.querySelector('value-box').result;
</script>
要素の内部で、計算されたプロパティを/変更result
として最新の状態に保つことが必要です。それにはいくつかの方法があります。1 つは、ウォッチャーを使用することです[ 1 ]:times
value
<property>Changed
<element name="value-box" attributes="value times result">
<template>
<p>result: {{result}}</p>
</template>
<script>
Polymer.register(this, {
valueChanged: function() {
this.result = this.value * this.times;
},
timesChanged: function() {
this.result = this.value * this.times;
}
});
</script>
</element>
デモ: http://jsbin.com/idecun/2/edit
または、ゲッターをresult
次のように使用できます。
Polymer.register(this, {
get result() {
return this.value * this.times;
}
});
デモ: http://jsbin.com/oquvap /2/edit
注:この 2 番目のケースでは、ブラウザーが をサポートしていない場合Object.observe
、Polymer はタイマーをダーティ チェックに設定しますresult
。これが、この 2 番目の例でコンソールに「here」と表示される理由です。で「実験的な WebKit 機能」を有効にして Chrome Canary で同じことを実行するとabout:flags
、タイマーは表示されません。Object.observe
どこにでもいるのが待ちきれないもう 1 つの理由です。:)
お役に立てれば。