Событие связывания полимера при нажатии на внутреннюю HTML

1

Как я запускаю событие "on-tap", присутствующее в строке html, которая вставлена в такой полимерный компонент.

<dom-module id="test-comp">

    <template>
        Please <span inner-h-t-m-l="[[htmlString]]"></span> here for an alert!
    </template>

    <script>
        Polymer({

          is: 'test-comp',

          properties: {
              htmlString: {
                  type: String,
                  value: '<a on-tap="doSomething">click</a>'
              }
          },

          doSomething: function () {
              console.log('tap event has happened!');
          }

        });
    </script>

</dom-module>

Фактический результат: Невозможно увидеть какое-либо событие нажатия/щелчка, я думаю, что событие on-tap в htmlString не скомпилировано для полимерного события, когда оно вставлено.

Ожидаемый результат: я должен уметь видеть, что 'tap event has happened!' при нажатии на тег привязки 'click' в выраженном html предложении

Теги:
polymer
event-handling
polymer-1.0

1 ответ

0

Мне не совсем ясно, чего вы хотите достичь здесь.
Однако я не считаю, что ваш показанный подход в любом случае чист или рекомендуется.

Если вы хотите добавить и удалить функцию в зависимости от некоторого состояния, вы можете по возможности добавить и удалить слушателей

this.listen(this.$.myButton, 'tap', 'onTap');
this.unlisten(this.$.myButton, 'tap', 'onTap');

Если вы хотите переключать функции в зависимости от состояния, я бы сделал это в функции решения:

<dom-module id="test-comp">

  <template>
    <span on-tap="alertSwitch"></span>
  </template>

  <script>
    Polymer({

      is: 'test-comp',

      alertSwitch: function() {
         if(a){
           this.alertOne();
         } else {
           this.alertTwo();
         }
      },
      alertOne: function () {
          console.log('first tap event has happened!');
      },
      alertTwo: function () {
          console.log('second tap event has happened!');
      }

    });
  </script>

</dom-module>

Не совсем понятно, что вы здесь делаете.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню