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

时间:2016-11-18 17:03:07

标签: polymer polymer-1.0 observers

我正在尝试理解在index = mywords[target] attached()事件中设置和取消聚合物组件内的观察者的正确方法,因此它只在连接元素后才开始观察。有任何想法吗?

2 个答案:

答案 0 :(得分:2)

目前,没有公开的API来强制添加观察者(但是存在私有的观察者),并且根本没有API来删除它们。

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

您可以像这样使用它:

Polymer({
  ...,

  properties: {
    foo: String
  },

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

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

codepen

答案 1 :(得分:2)

如果您不想使用私有方法,只需要计时而不需要 n动态观察者,只需在元素附加后设置道具,添加支持观察者,只在附加时执行。

  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);
    }
  });