如何在 Polymer 中设置和取消设置观察者?

How do I set and unset an observer in Polymer?

我试图了解在 attached()detached() 事件中的 Polymer 组件中设置和取消设置观察者的正确方法,因此它仅在附加元素后才开始观察.有任何想法吗?

目前,没有 public API 强制添加观察者(但存在私有观察者),也没有 API 移除观察者。

私有函数 _addComplexObserverEffect(...) 在一个或多个属性上创建观察者。正是这个函数处理了 Polymer 对象的 observers 数组中的每个观察者表达式。请注意,使用私有函数的注意事项是它可能在下一个版本中无法使用。

你可以这样使用它:

Polymer({
  ...,

  properties: {
    foo: String
  },

  attached: function() {
    this._addComplexObserverEffect('_fooChanged(foo)');
  },

  _fooChanged: function(foo) { ... }
});

codepen

如果您不想使用私有方法并且这只是时间问题而不需要 n 个动态观察者,只需在元素上设置一个 prop已附加,将该道具添加到观察者并且仅在附加时执行。

  Polymer({
    is: 'my-el',
    properties: {
      bar: String,
      attached: {
        type: Boolean,
        value: false
      }
    },
    observers: [
      '_barChagned(bar, attached)'
    ],
    _barChagned: function(bar, att) {
      if(!att) return;
        // Do your stuff
    },
    attached: function() {
      this.set('attached', true);
    }
  });