2014-12-24 3 views
1

다른 사용자 정의 요소의 선택을 관리하기 위해 사용자 정의 요소 내에서 core-selector 요소를 사용하고 있습니다. 나는 현재 'core-select'에 대한 이벤트 리스너를 추가하여 다른 객체 속성을 변경합니다. 이 변경 사항이 발생할 때 객체가 감시자를 실행하지 못하는 이유가 있습니다. 왜 누군가가 설명 할 수 있습니까?변경된 감시자가 작동하지 않습니다

코드 : 나는 또한 동일한 코드를 실행하려고 시도하지만, 코어 선택의 selectedItem을 보는 관찰자와

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'); 
     } 
}); 

, selectedIndex의, selectedModel 속성도 해고하지있다.

EDIT : core-menu를 사용하여 동일한 기능을 구현했습니다. 코어 메뉴에서 기능을 실행합니다. 이 함수는 selected.value 속성을 변경합니다. selectedChanged STILL이 호출되지 않습니다.

도움을 주셨습니다.

+0

이 코드는 'this'에 청취자를 붙이고'this'가'core-select'를 실행하기를 기대합니다. 이것은 의도 된 것입니까? – akonsu

+0

확실하지 않다. 나의 이해는 'core-select'가 실행되는 자식 노드의 부모 인 리스너가 추가 된 것이다. 이벤트가 거품처럼 튀어 나와야하기 때문에,이 이벤트 리스너는 해고 될 때 해당 아이에 대한 참조와 함께 하위 '코어 선택'이벤트를 잡아야합니다. 이것은 내가 어떻게 생각 하는지를 작동시키는 것처럼 보입니다. 내 이해가 완전히 틀린 경우 제발 수정하십시오. – andrsnn

+0

이것은 제 이해입니다. 이 질문은 도움이됩니다. http://stackoverflow.com/questions/23073344/observe-changes-for-an-object-in-polymer-js. 기본적으로, 당신의 이벤트 핸들러가 호출된다고 가정하면, 감시 된 오브젝트에서 속성을 변경할 때 Polymer는 속성 변경을 감시하지 않습니다. 나는 이것에 대해 완전히 확신하지는 않는다. – akonsu

답변

3

나는 이벤트 처리기가 호출된다고 가정하고 감시 대상 개체의 속성을 변경하면 Polymer는 속성 변경을 감시하지 않는다고 생각합니다. 옵저버 블록을 사용해야합니다 :

관련 문제