2017-01-16 4 views
0

У меня есть следующий элемент:Лучшего способа передать привязки Into дочернего элемента в Polymer 1.0

<link rel="import" href="../my-control/my-control.html" /> 

<dom-module id="my-page"> 
    <template> 
     <!-- pass the value down to the children element --> 
     <my-control my-property="{{myProperty}}"></my-control> 
    </template> 

    <script> 
     Polymer({ 
     is: 'my-page', 

     properties: { 
      myProperty: { 
       type: String, 
       value: '', 
       reflectToAttribute: true 
      } 
     } 
     }); 
    </script> 
</dom-module> 

Это «ребенок» контроль

<dom-module id="my-control"> 
    <template> 
     <!-- print the value of the property --> 
     <span>{{myProperty}}></span> 
    </template> 

    <script> 
     Polymer({ 
     is: 'my-control', 

     properties: { 
      myProperty: { 
       type: String, 
       value: '', 
       reflectToAttribute: true 
      } 
     } 
     }); 
    </script> 
</dom-module> 

И это, как я использую его. Я делаю это, потому что на самом деле "my-page" действительно не нуждается в собственности, но "my-control" делает и содержится в DOM "my-page". Есть ли другой способ, которым я могу это сделать? Потому что я передаю модель, и мне нужно десериализовать ее в атрибуте по атрибуту для каждого свойства?

<link rel="import" href="/my-page/my-page.html" /> 

<!-- declare parent element and value --> 
<my-page my-property="ABCDE-12345"></my-page> 
+1

Не совсем. Единственный другой способ, о котором я могу думать, - это выбрать js-select 'my-page', это' shadow dom' (метод изменяется в спецификациях V0 и V1), а затем выберите 'my-control' и присвойте ему значение. – a1626

+0

Надеюсь на какой-то «родительский» синтаксис привязки данных, такой как Angular, но я дважды проверял и ничего не нашел на Polymer 1.x docs – Raffaeu

+1

Ничего из того, что существует в Polymer – a1626

ответ

-1

Ваш вопрос выражает заботу повторного объявления детского имущества в родителе, чтобы передать имущество через ребенок. Фактически вам не нужно переопределять свойство в родительском, если он полностью не используется родителем (если только родительские пользователи не требуют двусторонней привязки данных к этому свойству).

Ниже приведен декларативный пример, в котором опускает свойство redeclaration в родительском.

<dom-module id="x-foo"> 
    <template> 
    <my-page foo="123"></my-page> 
    </template> 
    <script> 
    Polymer({is: 'x-foo'}); 
    </script> 
</dom-module> 

<dom-module id="my-page"> 
    <template> 
    <my-element foo="[[foo]]"></my-element> 
    </template> 
    <script> 
    // no property declaration needed for one-way binding 
    Polymer({is: 'my-page'}); 
    </script> 
</dom-module> 

codepen

Side Примечание: вам не нужно устанавливать reflectToAttribute для связывания данных.

+0

Но это именно то, что я делаю ... – Raffaeu

+0

@ Raffaeu Я признаю, что это выглядит очень похоже на то, что вы уже делаете, но это не совсем то же самое. Ваш вопрос выразил озабоченность по поводу неоправданного объявления свойства в родительском доме, и мой ответ указывает, что на самом деле это не обязательно делать, если вы передаете его непосредственно ребенку. Я добавил раздел, указывающий, что переопределение в родительском блоке будет необходимо только для двусторонней привязки, и, возможно, это замаскировало проблему, так как очевидно, что вам совсем не нужно свойство в родительском (или родительском)). Я уточню свой ответ, чтобы хотя бы прояснить это. – tony19

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

  • Нет связанных вопросов^_^