即使输入命令没有改变,我怎么能告诉Polymer 2.0关于函数结果的变化?考虑这个小例子,它修改了基本聚合物-2启动子试剂盒的my-view1:
<dom-module id="my-view1">
<template>
<style include="shared-styles">
:host {
display: block;
padding: 10px;
}
</style>
<div>[[getText(node)]]</div>
<paper-button on-tap="changeElements">Change elements</paper-button>
</template>
<script>
class MyView1 extends Polymer.Element {
static get is() { return 'my-view1'; }
static get properties() {
return {
node: {
type: Number,
value: 0
},
node2: {
type: Number,
value: 5
}
}
}
changeElements() {
this.node2 += 1;
console.log(this.getText(0));
}
getText(item) {
return this.node2;
}
}
window.customElements.define(MyView1.is, MyView1);
</script>
</dom-module>
当我单击按钮时,node2以及getText的结果会在控制台中显示更改。但是,所描绘的值始终保持在初始值5.我猜,由于节点没有改变,因此不会处理更改。是否有可能通知Polymer有关功能结果的变化?像notifyPath的功能或类似的东西?或者我需要设置一些标志或类似的东西吗?
虽然我知道只需输出node2而不是使用getText(节点)就可以很容易地解决这个最小的例子,但是在我的常规项目中它的功能要复杂得多,其中函数根据输出计算输出不同的因素。
答案 0 :(得分:1)
对......
<div>[[getText(node)]]</div>
...添加...
<div>[[getText(node, node2)]]</div>
并使用 this.set('node2',number)将事件发送到[[getText]],以便更新。使用设置变量。[变量] = XXX 通常不会更新任何内容。
养成使用this.set的习惯,否则当你开始使用dom-repeat和dom-if时,你会遇到麻烦。
答案 1 :(得分:0)
您正在使用带有node属性的计算绑定,这意味着它只会在更新节点时重新计算。如果要在更新node2时触发,则需要与node2绑定。 (或绑定到node和node2 ..)
有点奇怪的例子,因为你绑定了一个你没有使用的值。