Повторное использование элемента с Dart Polymer

Предложение:

Добрый день, у меня есть вопрос к коллективу мудрость-доверие. Я сделал наблюдение, пытаясь устранить загадочную ошибку с помощью Dart и Dart-Polymer (см. связанные).

То, что я обнаружил, относится к дарт-полимердротик-полимер) Элемент повторное использование кода; во время моего исследования вышеупомянутой ошибки я создал два клонированных дротик-полимерные элементы:

  1. <x-fred> и
  2. <z-fred>

Оба являются клонами элемента Секундомер в dart-полимер пример.

Единственное отличие от оригинала - это названия элементов.

Что мне приходит в голову, так это то, что я могу повторное использование кода "стандартный элемент", например секундомер Мне как минимум нужен отдельный fred .html для каждого элемента I повторное использование кода.

Это предполагает, что я могу организовать свой проект так, чтобы его было удобно и просто поддерживать.

Вопросы):

Настоящий вопрос заключается в том, как разработчик может делать следующие вещи ...?

  1. повторное использование кода определение макета элемента без необходимости создавать клон (или копию).
  2. Есть ли шаблон дротик-полимер? чтобы (по крайней мере) разрешить проекту повторно используйте код базового для клонированного dart- полимерные элементы?
  3. Is there a way to code-reuse an Element definition, using a declarative or "what-not-how" pattern so that I can say:
    • <z-fred> is-a stopwatch-element (for example).
  4. Существуют ли шаблоны или рецепты, позволяющие быть элементом секундомера и настраивать и / или настраивать экземпляр в соответствии с определенными стилями, параметрами или поведение.

Если нет, то эти вещи нужно вынести на обсуждение. Где это происходит для и [дротик: полимер]? Есть comp.lang.dart? :-)

Пример:

Предположим, у меня есть элемент Polymer с именем <z-fred>. И я хочу создать подкласс элемента z-fred для создания нового определения (дочернего) элемента: <x-fred>

Как я могу это сделать?

Я ожидал, что смогу сделать что-то вроде ...

  <!DOCTYPE html>
  <polymer-element name="x-fred">

    <link rel="import"     href="elements/zfred/fred.html">

    <template>
      <style>
        :host {  /* override zfred defiitions */
            background-color: blue;
            text-align: center;
            display: inline-block;
            border: solid 1px;
            padding: 10px 10px 10px 10px;
        }
      </style>
      <div>
        <x-fred> 
          <h1>X-Fred: {{counter}} </h1>
          <p>Fred X is a count-down timer.  Fred Z is a normal stopwatch (count-up).</p>
          <override>
            <button on-click="{{stop}}"  id="stopXFredButton">Stop</button>
          </override>
        </x-fred>
        <div>
           <p>this is a count-down timer.  Remaining time at end: {{ counter }} </p>
        </div>
      </div>
    </template>

    <script type="application/dart" src="xfred.dart">  </script>

  </polymer-element>

Видеть? Мой пример не сработает, потому что здесь требуется, чтобы XFred.polymer унаследовал от ZFred.polymer.

Тем не менее, я не видел ничего, чтобы связать .html плюс .dart с каким-то «элементом module». По-своему, я хотел сделать это, поместив каждый виджет в отдельную папку. Чтобы это работало (и будет лучшая механика), дочерняя должна иметь возможность переопределять родительские атрибуты Public и Protected (не частные).

Я думал, что xfred.dart неявно унаследует zfred.dart (поскольку лексически) оба файла Dart не связаны с элементом Polymer. На этом этапе необходимо изучить вопросы дизайна продукта. Варианты вроде:

  1. HTML files have independent inheritance tree to the .Dart files.
    • That means that zfred and xfred might use (share) the same underlying implementation, per various examples.
    • В качестве альтернативы можно «вызвать» подходящую реализацию .Dart определенного интерфейса.
  2. Смешанный элемент widget, состоящий из спецификаций кода .html и .dart.

В реальном пользовательском интерфейсе я могу захотеть объединить различные базовые элементы пользовательского интерфейса в различные виды подэлементов для создания страницы, формы или макета. Я думаю, что после концепции №1 жизнь остается менее беспорядочной. Это удовлетворяет другое требование для меня, связанное с возможностью управлять альтернативным поведением кода программной части для одного и того же элемента.

В конце дня. Главный вопрос, который я задаю, - насколько это часть фреймворка и сколько требуется ручной работы, чтобы все оставалось счастливым? :-)


person will    schedule 20.03.2014    source источник
comment
Привет, не могли бы вы повсюду использовать теги. Это затрудняет чтение ваших вопросов.   -  person Günter Zöchbauer    schedule 20.03.2014
comment
Не могли бы вы добавить код, чтобы продемонстрировать, чего вы пытаетесь достичь. Не обязательно работать, но с ним намного легче обсуждать (задавать вопросы). Есть ли конкретная причина, по которой вы удалили упомянутый вопрос, или просто ссылка не работает?   -  person Günter Zöchbauer    schedule 20.03.2014


Ответы (1)


Вы можете наследовать существующие полимерные элементы.

Лучшее место для дискуссий - группы Dart Google.

person Günter Zöchbauer    schedule 20.03.2014
comment
Этот пример наследуется только от объекта Dart. Думаю, мне следовало задать вопрос: унаследовать виджет. Какой дизайн (.HTML) плюс поведение (.Dart) - person will; 20.03.2014
comment
Я не пробовал, но вы можете применять аннотации несколько раз. Может сработает добавление аннотации @CustomTag. - person Günter Zöchbauer; 20.03.2014