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

How to don't invoke the change notification in a observed property in Polymer?

我有一个 属性 ("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>

"resetToggleChecked" 是用未知值调用的,我必须确保 "toggleChecked" 被更改而没有 "some stuff"。 只有当我用鼠标按下切换键时,我才必须执行 "some stuff"。

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

检查 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"