2016-04-05 3 views
3

Я пытаюсь получить доступ к методам Javascript, содержащимся в пользовательском элементе Polymer, <general-element>. Этот элемент содержит функции для открытия и закрытия панели.Доступ к методам JavaScript внутри встроенных пользовательских элементов Polymer

Этот общий элемент используется в более конкретном элементе, например: <specific-element></specific-element>. Конкретный элемент содержит общий элемент и добавляет ему атрибуты, т. Е. Заголовок панели и т. Д.

Однако при использовании <specific-element> в пределах страницы я не могу вызвать какие-либо методы открытия/закрытия из нее. Я приближаюсь к этому неправильно, и есть ли способ сделать это?

Edit: Примеры кода

Удалили некоторые Polymer код - примеры, чтобы показать, как элементы работают вместе

Общие Элемент:

<dom-module id="general-element"> 
    <template> 
     // Code to define a slide-in panel 
    </template> 

    <script> 
     _openPanel: function() { 
      //Apply class to make panel visible 
     }, 
     _closePanel: function() { 
      // Apply class to hide panel 
     } 
    </script> 
</dom-module> 

Конкретная Элемент:

<dom-module id="specific-element"> 
    <template> 
     <general-element title="Administration Panel" > 
      <h1>Hello</h1> 
     </general-element> 
    </template> 
</dom-module> 

Использование :

<dom-module id="admin-page"> 
    <template> 
     <button on-click="openPanel"></button> 
     <specific-element></specific-element> 
    </template> 

    <script> 
     openPanel: function() { 
      // Trying to call general-element _openPanel method 
     } 
    </script> 
</dom-module> 

То, что я пытаюсь сделать здесь называют поведение openPanel, как уже описано в общем-элемент. Это связано с тем, что панель будет использоваться в нескольких местах, поэтому не имеет смысла продолжать внедрять методы open/close для конкретных панелей, поскольку они будут работать одинаково.

+0

Некоторые фактический код будет приятно, что показывает, как связаны элементы. –

+0

@ GünterZöchbauer Добавили примеры кода – Vanita

ответ

5

Это должно работать

openPanel: function() { 
    // Trying to call general-element _openPanel method 
    $$('specific-element').$$('general-element')._openPanel(); 
} 
+0

Спасибо, это сработало! – Vanita

+0

Отлично! Спасибо за отзыв :) –

+0

Время. Я искал и искал. Благодарю. –

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