2017-02-05 3 views
0

Я пытаюсь запустить пользовательское событие от дочернего элемента к его родительскому объекту, но не работает с использованием объекта listeners. он работает с использованием аннотированных событий, но это неприменимо в большинстве ситуаций. Как я могу использовать объект-слушатели в этом случае. Вот код, чтобы проиллюстрировать эту проблему:Политические пользовательские события, запущенные дочерним элементом, не пойманным родительским элементом

<!--in child element's dom..--> 

<dom-module id="searchresult-controller"> 
    <template> 
     <style> 
      ... 
     </style> 
    </template> 
    <script type="text/javascript"> 
     Polymer({ 
      is: "searchresult-controller", 

       ready: function(){ 
        this.sendSignal(); 
      }, 

      sendSignal: function() { 
       this.fire('msg', {data: 'i love polymer'}); 
      } 
     }); 
    </script> 
</dom-module> 

<!-- in parent --> 
<dom-module id="search-controllers"> 
<template> 
    <style> 
     ... 
    </style> 
    <searchresult-controller></searchresult-controller> 
    <result-view></result-view> 
</template> 

<script type="text/javascript"> 
    Polymer({ 
     is: "search-controllers", 

     listeners: { 
      'msg': '_showAlert' 
     }, 
     _showAlert: function(e) { 
      console.log(e.detail.data); 
     } 

    }); 
</script> 

Заранее спасибо за вашу помощь.

ответ

0

Не могли бы вы исправить это событие с searchresult-controller по телефону attached, а не ready?

ready может быть слишком рано для search-controllers обрабатывать так, according to the docs, слушатели устанавливают в listeners объекте устанавливается во время события attached жизненного цикла.

Моя догадка searchresult-controllerready Событие происходит до search-controllersattached Событие.

+0

спасибо за тонну esp за ссылку на d docs. Тем не менее в отношении событий я попытался запустить событие сигнала железа из main.js, например, var event = new CustomEvent ('iron-signal', {'detail': {name: 'action', data: "foo" }}); document.dispatchEvent (событие); , в то время как другой элемент прослушивался с использованием сигналов железа, но результатов не было. Как я могу это сделать, и есть ли какие-нибудь хорошие книги на полимере, которые вы можете порекомендовать, потому что мне нужно создать прочный фундамент с пониманием основ создания приложений с помощью полимера. – jobie

+1

Как вы настроили свои '' и более конкретно, как вы пытались прослушать событие 'action'? Я не знаю о книгах, но я считаю, что чтение [Исходный код компонентов Polymer на GitHub] (https://github.com/PolymerElements) учит вас многому. –

Смежные вопросы