如何在Polymer中的观察属性中调用更改通知?

时间:2015-11-18 23:25:57

标签: properties polymer polymer-1.0

我有一个属性(" toggleChecked")由切换按钮更改,当按下切换按钮时必须执行某些操作。 我需要重置切换值而不调用观察者函数。

<dom-module id="custom-element">
<template>
  <paper-toggle-button checked="{{toggleChecked}}">Toggle</paper-toggle-button>
</template>
<script>
  Polymer({
    properties: {
      toggleChecked: {
        type: Object,
        observer: 'toggleCheckedChanged'
      }
    },
    toggleCheckedChanged: function(value) {
      // do some stuff...
    },
    resetToggleChecked: function(value) {
      // change the value, but don't activate the observer function!
      this.toggleChecked = value; // ??
    }
  });
</script>
</dom-module>

&#34; resetToggleChecked&#34;使用未知值调用,我必须确保&#34; toggleChecked&#34;如果没有&#34;一些东西&#34;就会改变。 我必须做一些事情&#34;只有当我用鼠标按下切换按钮时。

有没有办法在不调用观察函数的情况下更改属性?

1 个答案:

答案 0 :(得分:2)

检查documentationpaper-toggle-button会发出两个不同的更改事件:

  • change:由于用户互动而检查状态发生变化时触发。
  • iron-change:当检查状态发生变化时触发。

如果仅将回调绑定到change事件,则只有当用户输入中的按钮被激活切换时才会运行回调,而当基础值发生更改时,

<dom-module id="custom-element">
<template>
  <paper-toggle-button 
    on-change="_onChanged" 
    checked="{{toggleValue}}">Toggle</paper-toggle-button>
</template>
<script>
  Polymer({
    properties: {
      toggleValue: {
        type: Boolean
      }
    },
    _onChanged: function(event) {
      // This is called only when the paper-toggle-button changes 
      // via user interaction. 
      // do some stuff...
    },
    resetToggleChecked: function(value) {
      // This will cause the toggle's checked value to change
      // without triggering the _onChanged handler.
      this.toggleValue = value;
    }
  });
</script>
</dom-module>

修改:更正了错误的行: on-changed =“{{_ onChanged}}” on-change =“_ onChanged”