聚合物改变观察者不会开火

时间:2014-12-24 19:33:52

标签: javascript polymer addeventlistener web-component

我在自定义元素中使用核心选择器元素来管理其他自定义元素的选择。我正在为'core-select'添加一个事件监听器,然后更改另一个对象属性。出于某种原因,当发生此更改时,对象已更改,观察者不会触发。有人可以解释原因吗?

代码:

Polymer('custom-elem',{
     selected: {},
     created: function(){

     this.selected = {
        value: null,
        reflect: true
      }
      },
     ready: function(){
        this.addEventListener('core-select', function(e){
          if (e.detail.item.active != null){
            this.selected.value = e.detail.item.name;
            //logging displays the correct value
            console.log(this.selected.value);
          }
        });
      },
      selectedChanged: function(){
        //never fires
        console.log('working');
      }
});

我还试图实现相同的代码,但是观察者正在观察核心选择selectedItem,selectedIndex,selectedModel属性,它也永远不会被触发。

编辑:刚刚使用core-menu实现了相同的功能,它在on-core-select上激活了一个函数。所述函数更改selected.value属性。 selectedChanged STILL不会被调用。

任何帮助表示赞赏。

1 个答案:

答案 0 :(得分:3)

我认为,假设您的事件处理程序被调用,当您更改被监视对象的属性时,Polymer不会监视属性的更改。您需要使用观察者块:

observe: {
  'selected.value': 'selectedChanged'
},