聚合物 - 如何覆盖计算的属性?
如何覆盖计算的属性?聚合物 - 如何覆盖计算的属性?
这里有一个片段,其中的父类A
计算result
属性等于value
财产,而它的子类B
将重新计算result
属性等于value + value2
。
但覆盖不工作...
class A extends Polymer.Element { static get properties(){
return {
value : Number,
result : {
type : Number,
computed : "computeProperty(value)"
}
}
}
computeProperty(value){
return value;
}
}
class B extends A {
static get is() { return "b-element"; }
static get template(){
return `
<div>Value : [[value]]</div>
<div>Value2 : [[value2]]</div>
<div>Result : [[result]]</div>
`
}
static get properties(){
return {
value2 : Number,
result : {
type : Number,
computed : "recomputeProperty(value, value2)"
}
}
}
recomputeProperty(value, value2){
return value + value2;
}
}
// Register the new element with the browser
customElements.define(B.is, B);
<script src="https://polygit.org/components/webcomponentsjs/webcomponents-loader.js"></script> <link rel="import" href="https://polygit.org/components/polymer/polymer-element.html">
<b-element value="1" value2="2">
</b-element>
回答:
我不认为这是可能的,但你可以做的是利用观察员:
static get properties() { return {
// ...
result : {
type : Number,
// making the result read-only because it's computed
readOnly : true,
}
}
}
static get observers() {
return ['onValueChanged(value, value2)']
}
onValueChanged(value, value2) {
this.setProperties({
result : value + value2
}, true);
}
以上是 聚合物 - 如何覆盖计算的属性? 的全部内容, 来源链接: utcz.com/qa/258094.html