Polymer 1.0数据绑定无法正常工作

时间:2015-06-16 23:37:23

标签: binding polymer

我有以下聚合物元素:

调用someMethod后,navigator.currentStep的值不会更新。

<dom-module id="m">
  <template>
    Navigator step = <span>{{navigator.currentStep}}</span>
  </template>
</dom-module>


Polymer({
        is: 'm',
        ready: function() {
          this.navigator = new Navigator(1);
          console.log(this.navigator.currentStep);  // 1
        },
        someMethod: function() {
          this.navigator.next();
          console.log(this.navigator.currentStep);   // 2
}
});

输出始终为

  

导航器步骤= 1

但以下作品

<dom-module id="m">
  <template>
    Navigator step = <span>{{currentStep}}</span>
  </template>
</dom-module>


Polymer({
        is: 'm',
        ready: function() {
          this.navigator = new Navigator(1);
          this.currentStep = this.navigator.currentStep;   // 1
        },
        someMethod: function() {
          this.navigator.next();
          this.currentStep = this.navigator.currentStep;   // 2
}
});

1 个答案:

答案 0 :(得分:3)

致电this.notifyPath('navigator.currentStep', this.navigator.currentStep)

请参阅https://www.polymer-project.org/1.0/docs/devguide/data-binding.html#set-path

  

有时,命令式代码需要直接更改对象的子属性。由于我们避免使用更复杂的观察机制(如Object.observe或脏检查)以便为最常见的用例实现跨平台的最佳启动和运行时性能,因此直接更改对象的子属性需要用户的协作。 / p>      

具体来说,Polymer提供了两个API,允许将这些更改通知给系统:notifyPath(path, value)set(path, value),其中path是标识路径的字符串(相对于主机元素)。