如何将Array变异通知给所有元素实例

时间:2017-02-21 14:08:10

标签: javascript arrays polymer polymer-1.0 web-component

我希望有一个聚合物元素,它与所有实例共享一个数组。如果我不使用函数来实例化数组,那么这是可能的。这很好用。当我使用this.push(“ArrayPath”,Value)更改数组元素时,比只通知当前实例,但不是全部通知。我想要的是有一个计算的布尔属性,它监听数组的变化,我有什么:

Polymer({
        is: 'data-holder',
        properties: {
            editedFields: {
                type: Array,
                notify: true,
                value: []
            },
            unsaved: {
                type: Boolean,
                notify: true,
                reflectToAttribute: true,
                computed: '_isUnsaved(editedFields.*)'
            }
        },


       _isUnsaved: function(array) {
           return (array.base.length > 0) ? true : false;
       },
       _addItem: function(value) {
           this.push("editedFields", value);
       }, 
....

好到目前为止一切顺利。使用_addItem函数,我将一个项添加到editedFields数组,并调用我的_isUnsaved函数。这可以。但是这只在我调用_addItem方法的实例中调用。在所有实例中都更改了“editedFields”数组,但只在当前实例中通知了“unsaved”属性?

如何管理它以使所有实例都听取阵列更改?这样所有实例都将属性“unsaved”赋予元素声明?

顺便说一句。 _addItem方法的value参数是一个确保唯一性的对象

0 个答案:

没有答案