【发布时间】:2017-04-02 14:54:32
【问题描述】:
我试图了解在 attached() 和 detached() 事件中的 Polymer 组件中设置和取消设置观察者的正确方法,因此它仅在附加元素后才开始观察。有任何想法吗?
【问题讨论】:
标签: polymer polymer-1.0 observers
我试图了解在 attached() 和 detached() 事件中的 Polymer 组件中设置和取消设置观察者的正确方法,因此它仅在附加元素后才开始观察。有任何想法吗?
【问题讨论】:
标签: polymer polymer-1.0 observers
如果你不想使用私有方法并且它只是时间问题而不需要有 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);
}
});
【讨论】:
目前,没有公共 API 可以强制添加观察者(但存在私有 API),也根本没有 API 可以删除它们。
私有函数_addComplexObserverEffect(...) 在一个或多个属性上创建一个观察者。正是这个函数处理 Polymer 对象的 observers 数组中的每个观察者表达式。请注意,使用私有函数的注意事项是它可能在下一个版本中无法使用。
你可以这样使用它:
Polymer({
...,
properties: {
foo: String
},
attached: function() {
this._addComplexObserverEffect('_fooChanged(foo)');
},
_fooChanged: function(foo) { ... }
});
【讨论】: