Пользовательские события в пользовательском интерфейсе Nested Polymer Dart

У меня возникли трудности с концепцией доступа к конкретному CustomEvent.

Вот моя проблема.

у меня естьname-form.html что я импортирую вnok.html а такжеpt.html.

name-form.html имеет пользовательское событие, которое публикует наблюдаемую модель для формы. На эту опубликованную модель затем подписывается подробный параметр CustomEvent. Проблема в том, что у меня есть три разные формы для захвата имени в каждой из них,name-form.html будет запускать то же пользовательское событие.

Я думаю, что мне придется дублироватьnok-form.html 3 раза и измените имя пользовательского события, чтобы прослушать его в соответствующем контексте. Хотя это работает, вы можете увидеть, как код раздут для каждого дублированного файла, просто чтобы изменить опубликованное событие.

Любые идеи, как я мог бы сделать это иначе, будут оценены.

Спасибо

редактировать

Это просто для добавления отсутствующего кода.

нок-form.html

    <!DOCTYPE html>

    <polymer-element name='name-form'>
      <template>
        <form>
         <section id='first'>
           <label for='firstTxt' >First</label>

            <input id='first-name'
             name='first-name'
             type="text"
             value="{{name.first}}"
             required
             on-change='{{submit}}'>
          </section>

            <button id='submit-btn'
              type='submit'></button>
          </form>
       </template>

       <script type="application/dart">

        import 'package:polymer/polymer.dart';
        import 'dart:html';



        @CustomTag( 'name-form' )
        class NameForm extends PolymerElement
        {

          @observable Name  name = new Name();

          NameForm.created() : super.created();

          void submit ( Event e, var detail, Node target )
          {


            $[ 'submit-btn' ].click();

            $['form'].onSubmit
              .listen( ( e )
                  {
                    dispatchEvent(new CustomEvent('nameEvent', detail:name ) );
                    e.preventDefault();
                  });
          }
        }

      </script>
    </polymer-element>

нок-form.html

  <!DOCTYPE html>

  <link rel="import" href="name-form.html">

  <polymer-element name='nok-form'>
    <template>

      <name-form id='name-form' on-nameEvent={{useModel}}></name-form>


     </template>

     <script type="application/dart">

      import 'package:polymer/polymer.dart';
      import 'dart:html';


      @CustomTag( 'nok-form' )
      class NokForm extends PolymerElement
      {


        NokForm.created() : super.created();

        void useModel ( CustomEvent e, var detail, Node target )
        {
          // This output will be the same as for patient-form
          // since the event detail is the same
          print ( e.detail.fistname );
        }

      }

    </script>
  </polymer-element>

Пациент-form.html

  <!DOCTYPE html>

  <link rel="import" href="name-form.html">

  <polymer-element name='patient-form'>
    <template>

      <name-form id='name-form' on-nameEvent={{useModel}}></name-form>


     </template>

     <script type="application/dart">

      import 'package:polymer/polymer.dart';
      import 'dart:html';


      @CustomTag( 'patient-form' )
      class PatientForm extends PolymerElement
      {


        PatientForm.created() : super.created();

        void useModel ( CustomEvent e, var detail, Node target )
        {
          // This output will be the same as for nok-form
          // since the event detail is the same
          print ( e.detail.fistname );
        }

      }

    </script>
  </polymer-element>


 class Name
 {
    String firstname = '';

  }

Вопрос: Как я могу получить name-form.html для отправки CustomEvent в nok-form.html или Patient-form.html. В настоящее время одно и то же событие отправлено обоим. Как вы можете видеть, данные, собранные в форме имени, представляют два разных имени.

Ответы на вопрос(1)

Ваш ответ на вопрос