Как вы, наверное, знаете, Polymer запрещает привязку unescapedHTML по многим разумным причинам.
Как внедрить HTML в шаблон с помощью полимера< /а>
Как отобразить html внутри шаблона?
Однако в моем проекте требовалось применять HTML из внешнего источника.
Поэтому я реализовал компонент с именем ‹echo-html›:
<dom-module id="echo-html">
<template>
<style>
</style>
</template>
</dom-module>
<script>
(function() {
Polymer({
is: 'echo-html',
properties: {
html: {
type: Object,
value: '',
observer: '_refreshHtml'
},
},
_refreshHtml: function() {
if (this.html) {
var value = '';
var container = Polymer.dom(this).parentNode;
if ((this.html.constructor == Array) && (this.html.length == 1)) {
value = this.html[0];
} else {
value = this.html;
}
if (this.parentNode) {
this.outerHTML = value;
}
this.scopeSubtree(container, true);
$(this).removeClass('echo-html');
}
},
});
})();
</script>
Моя проблема заключается в том, что этот компонент связывает именно чистый HTML, поэтому, когда я хочу использовать ‹p› или ‹strong› или любой другой элемент, я не могу просто использовать стиль родительского компонента и поэтому должен использовать глобальные стили.
Есть ли способ применить стили родительского элемента, например:
<parent-element>
<echo-html html$="{{some-nasty-html}}"></echo-html>
</parent-element>
"some-nasty-html" будет включать в себя класс .parent-element
?
Можно ли как-нибудь удалить класс .echo-html
? Собственно, это мой вопрос :)