2
所以我决定尝试使用observers而不是custom events进行通信。删除/禁用聚合物观察员
在我的引导逻辑,我在听一些模型与观测块更新:
observe: {
'$.myModel.value': function(){
initLogic();
delete this.observe['$.myModel.value'];
}
},
然后我想停下来听,因为这只需要做一次。
是否像删除observe.<whatever>
函数(如上所示)或一样简单?我需要更明确与聚合物?
或者我可以用一个承诺,在这种情况下,如果观察者保持触发我不在乎:
var initDeferred = Promise.defer();
Polymer('init-logic', {
observe: {
'$.myModel.value': initDeferred.resolve
},
ready: function(){
initDeferred.promise.then(initLogic);
}
});
但是有到位有不必要的观察员性能影响?
感谢您指出了这一点,我没有注意到,但我不知道如何使用绑定来代替观察者/事件监听器。我也在考虑用[onMutations](https://www.polymer-project.org/0.5/docs/polymer/polymer.html#onMutation)风格的'observeOnce'功能扩展Polymer元素,但这样做会起作用属性而不是DOM子树。 – Renaud
据我所知,myModel需要设置一次,对吧?所以你可以在元素的属性中传递这个myModel的值,但是在你的代码中使用myModel的一个时间绑定语法。虽然,我还没有尝试过一次,但这是我将如何继续。 – Shhhhh
我明白你的意思,但它只适用于原始类型值,不适用于对象或函数。 – Renaud