2016-11-18 139 views

回答

2

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

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

你可以使用这样的:

Polymer({ 
    ..., 

    properties: { 
    foo: String 
    }, 

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

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

codepen

+0

有没有计划能够在未来做到这一点?公开设置和未设置的方法? –

2

如果你不想使用的私有方法和它只是时间问题,而不是一个需要有ñ动态观察者,只要元素已连接就设置一个道具,将该道具添加到观察者,并且仅在连接时执行。

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