我已經創建了一個包含聚合物的自定義Web組件,該文件包裝文本並略微改變它(在此概念證明中轉換爲大寫)。在Polymer 1.0中綁定的文本包裝元素
元素本身對靜態內容工作正常。但是,當內容被動態綁定時,組件無法顯示內容。
例如:
<my-wrapper>Hello, World!</my-wrapper> <!-- Works -->
<my-wrapper>[[someText]]</my-wrapper> <!-- Doesn't work -->
目前我使用observeNodes,管理觸發了初始文本轉換,但未能觸發子的連續改變。
我目前的原型定義爲:
<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。
有關如何捕捉(光DOM)內容更改的任何建議,以便我可以重新轉換文本?正如你在代碼塊註釋中看到的那樣,我已經嘗試過使用MutationObserver,但是未能創建一個工作原型。我的猜測是我沒有使用正確的節點(在我的情況下爲this.root
)。
您是否找到了解決方法?目前我還在編寫一個文本包裝器,但到目前爲止還沒有解決方案爲我工作。唯一能做這項工作的是將文本作爲屬性傳遞(這在我看來並不乾淨) – Yorrd
@Yorrd:不,我還沒有找到解決方案。我也嘗試將元素的內容與'Templatizer'行爲一起放入'template'標籤中,但未能產生任何有用的結果。 – alesc