如何在Polymer中设置和取消设置观察者?
问题描述:
我想了解在attached()
和detached()
事件中聚合物组件内设置和取消设置观察者的正确方法,因此只有在元素被连接后才能开始观察。有任何想法吗?如何在Polymer中设置和取消设置观察者?
答
目前,没有公开的API来强制添加观察者(但存在私有的),并且根本没有API来删除它们。
私有函数_addComplexObserverEffect(...)
在一个或多个属性上创建观察者。它是处理Polymer对象observers
数组中每个观察者表达式的函数。注意使用私有函数的警告是它可能在下一个版本中不可用。
你可以使用这样的:
Polymer({
...,
properties: {
foo: String
},
attached: function() {
this._addComplexObserverEffect('_fooChanged(foo)');
},
_fooChanged: function(foo) { ... }
});
答
如果你不想使用的私有方法和它只是时间问题,而不是一个需要有ñ动态观察者,只要元素已连接就设置一个道具,将该道具添加到观察者,并且仅在连接时执行。
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);
}
});
有没有计划能够在未来做到这一点?公开设置和未设置的方法? –