result
是元素上的一个属性,就像times
and一样value
。您可以从 JS 外部访问它,就像访问普通 HTML 元素上的任何属性一样。例如:
<value-box value="2" times="10"></value-box>
<script>
document.querySelector('value-box').result;
</script>
在您的元素内部,您想要的是将result
计算属性保持为最新times
/value
更改。有几种方法可以做到这一点。一种是使用<property>Changed
观察者[ 1 ]:
<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
或者,您可以将 getter 用于result
:
Polymer.register(this, {
get result() {
return this.value * this.times;
}
});
演示: http: //jsbin.com/oquvap /2/edit
注意对于第二种情况,如果浏览器不支持Object.observe
,Polymer 将设置一个计时器来进行脏检查result
。这就是为什么您在第二个示例的控制台中看到“此处”打印的原因。在启用了“Experimental WebKit features”的情况下,在 Chrome Canary 中运行相同的操作about:flags
,您将看不到计时器。我等不及Object.observe
无处不在的另一个原因!:)
希望这可以帮助。