Я создал пользовательский веб-компонент с Polymer, который обертывает текст и слегка изменяет его (преобразование в верхний регистр в этом доказательстве концепции).
Сам элемент работает со статическим содержимым. Однако, когда контент динамически привязан, компонент не может отображать содержимое.
Например:
<my-wrapper>Hello, World!</my-wrapper> <!-- Works -->
<my-wrapper>[[someText]]</my-wrapper> <!-- Doesn't work -->
В настоящее время я использую observNodes, которому удается инициировать исходное текстовое преобразование, но не может вызывать подпоследовательные изменения.
Мой текущий прототип определяется как:
<dom-module id="my-wrapper">
<template>
<span id="placeholder"></span>
</template>
<script>
Polymer({
is: 'my-wrapper',
ready: function() {
var self = this;
Polymer.dom(Polymer.dom(this)).observeNodes(function(info) {
self.$.placeholder.textContent = info.target.textContent.toUpperCase();
});
/*var mutationObserver = new MutationObserver(function(e) {
console.log(e);
});
mutationObserver.observe(this.root, {characterData: true, childList: true});*/
},
});
</script>
</dom-module>
И работающий JSBin для вышеупомянутой проблемы можно найти здесь: http://jsbin.com/jumewuzuho/1/edit?html,console,output.
Любые предложения о том, как записать изменение содержимого (light DOM), чтобы я мог преобразовать текст?
Как вы можете видеть в комментированном блоке кода, я уже пытался использовать MutationObserver, но не смог создать рабочий прототип. Я предполагаю, что я не использовал правильный node (this.root
в моем случае).