聚合物,观察全局变量



我有多个共享相同数据列表的自定义元素。我正在尝试在全局列表更改时触发一个事件。

下面的代码是工作在FF和Safari,但不是在Chrome上。对这个问题有什么建议,或者更好的方法吗?

谢谢,

 (function() {
        var _list = null;
        Polymer("dmw-datatypes", {
            ready:function(){
                ...retreiving a list async...
            },
            get list() {
                return _list;
            },
            listReceived: function(json) {
                _list=json;
            },
            listChanged: function(oldValue, newValue) {
                this.fire('list-received');
            }
        });
    })();

这听起来像是Object.observe()(这是Chrome原生的)不工作开箱开箱计算属性(像你的get list() {})的一个症状。其他浏览器使用手动脏检查来填充这种行为,所以它们工作得很好。基本上,您需要创建自己的Object.observe()通知器

var notifier = Object.getNotifier(this); 

并在使用notifier.notify()更新_list时通知观察者。上面的链接给出了一个这样的例子: