2016-01-10 2 views
0

polymer-starter-kit использует <section> при отображении маршрутизации Params, например:Pass маршрутизации Params к элементу

<section data-route="user-info"> 
    <paper-material elevation="1"> 
    <h2 class="page-title">User: {{params.name}}</h2> 
    <div>This is {{params.name}}'s section</div> 
    </paper-material> 
</section> 

Но я хотел бы передать данные params.name элементу, как это:

<notification-section params="{{params}}" data-route="notifications"></notification-section> 

Пока я могу передать данные элементу и вычеркнуть его в своем шаблоне, мне нет доступа к переменной params из любого lifecycle events (например, ready).

Как это можно сделать?

ответ

0

Вы можете получить доступ к Params из «прикрепленным» обратного вызова, как так

Polymer({ 
    is: 'notification-section', 
    properties: { 
    params: { 
     type: Object, 
    }, 
    }, 
    attached: function(e) { 
    console.log('params', this.params); 
    }, 
}); 

Вы можете прочитать больше о прикрепленном событии here

У меня также есть рабочий пример here

+0

Насколько я понимаю, во время событий «готового» или «прикрепленного» жизненного цикла (раздела «уведомление-раздел») родительский элемент еще не создан. Любые динамически заданные свойства не будут готовы в дочернем элементе ('notification-section'). – Mike

+0

Тестирование этого в моем коде показывает, что параметры не определены. – Mike

+0

Извините, я думал, вы имели в виду [это] (http://jsbin.com/qumoba/edit?html,js,console,output). Вы устанавливаете атрибут родительского элемента, который передается дочернему элементу, и пытается прочитать его из одного из событий жизненного цикла дочерних элементов? Если нет, то я неправильно понял вопрос извините. –

0

Будучи элементами, подготовленными из самого глубокого ребенка, событие ready не будет иметь доступа к данным, которые устанавливают мои восходящие компоненты. Если вы хотите внести функциональные изменения в свой элемент на основе этих данных, вам потребуется либо привязать к событию changed, либо подумать о другом способе инициализации этого элемента, что то, что поддерживается из коробки, iron-pages.

+0

Я думаю, что вы» исправить. Я рассматриваю альтернативы - возможно, «железо-мета». – Mike

+0

@Mike вы можете обернуть дочерний элемент в 'dom-if' и только создать экземпляр, когда' params.name' доступен, и тогда он будет там. Небольшая обработка служебных сообщений, но если вам действительно нужен этот параметр в событиях жизненного цикла, это должно получить его для вас. Интересно, что вы пытаетесь получить, имея доступное в те времена, пример, который вы даете в вопросе, кажется, не приносит пользы от этого, но я уверен, что это просто дистилляция больших проблем. – Westbrook

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