Как я запускаю событие "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 предложении
Мне не совсем ясно, чего вы хотите достичь здесь.
Однако я не считаю, что ваш показанный подход в любом случае чист или рекомендуется.
Если вы хотите добавить и удалить функцию в зависимости от некоторого состояния, вы можете по возможности добавить и удалить слушателей
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>
Не совсем понятно, что вы здесь делаете.