Ale*_*kin 6 web-component polymer
我想用同一个共享观察者观察一些属性.比方说,我想跟踪修改历史.不幸的是,根据文档,标准的聚合物观察者回调有一个无艺术的原型:
myObserver: function(oldValue, newValue) {}
Run Code Online (Sandbox Code Playgroud)
由于我想跟踪变化,我需要知道属性的名称已更改.通过反向工程arguments的myObserver,我惊讶地发现,有型的第三个参数Arguments[3]传递给函数.所以下面的代码^ W woodoo-magic就可以了:
myObserver: function() {
if (arguments.length > 2) { // observer called by polymer
var args = arguments[2];
var idx = args[1].length - 1; // sic! index of changed is stored in index
var prop = args[2][idx * 2 + 1][0];
var val = args[0][idx];
console.log("Property [" + prop + "] got new value: " + val);
}
...
}
Run Code Online (Sandbox Code Playgroud)
为了保持理智,我保持理智和渴望,我想知道我是否错过了更加和蔼可亲的方法来从观察者那里获得更改的属性名称.
@ebidel和@robdodson你能否对此有所了解?请问arguments[2]在最新版本的支持?有没有更好的方法来应对变化?
提前致谢.
我认为您正在寻找一种不同的机制。如果您确实愿意采用不同的机制来实现您需要的功能,那么查看 MutationObserver 可能不会有什么坏处。我已经成功地尝试了这个答案中的演示,并且可以轻松地在我的 chrome 控制台中记录这个 MutationObserver 正在观察的元素。
希望这可以帮助 !