【问题标题】:How do I set and unset an observer in Polymer?如何在 Polymer 中设置和取消设置观察者?
【发布时间】:2017-04-02 14:54:32
【问题描述】:

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

【问题讨论】:

    标签: polymer polymer-1.0 observers


    【解决方案1】:

    如果你不想使用私有方法并且它只是时间问题而不需要有 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);
        }
      });
    

    【讨论】:

      【解决方案2】:

      目前,没有公共 API 可以强制添加观察者(但存在私有 API),也根本没有 API 可以删除它们。

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

      你可以这样使用它:

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

      codepen

      【讨论】:

      • 未来是否有计划能够做到这一点?公共设置和取消设置方法?
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-08-30
      • 2021-09-16
      • 1970-01-01
      • 2014-07-15
      • 2017-09-16
      • 2011-03-29
      • 2016-09-18
      相关资源
      最近更新 更多