关于新功能结果通知聚合物

时间:2017-07-21 13:19:14

标签: javascript polymer polymer-2.x

即使输入命令没有改变,我怎么能告诉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(节点)就可以很容易地解决这个最小的例子,但是在我的常规项目中它的功能要复杂得多,其中函数根据输出计算输出不同的因素。

2 个答案:

答案 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 ..)

有点奇怪的例子,因为你绑定了一个你没有使用的值。