动态添加的纸按钮未正确呈现
Dynamically added paper-button is not rendered correctly
我有以下 html:
<paper-button raised>Static</paper-button>
<script>
var button = document.createElement('paper-button');
button.textContent = "dynamic";
button.raised = true;
document.body.appendChild(button);
</script>
如果我静态添加纸张按钮,它会正常呈现,但我动态地做了几乎完全相同的事情,我没有得到任何动画。
如果我动态添加纸按钮,我需要做些什么特别的事情吗?
在 Polymer 1.0 中,有几种方法可以做到这一点。
选项 1(使用 document.createElement
)
更新:我认为@Kasper 的回应是使用 Polymer.dom 时更好的方法,因为它允许我们直接插入 textContent 而不是通过内部 class.
<!-- my-dom-element.html -->
<link href="bower_components/polymer/polymer.html" rel="import">
<link href="bower_components/paper-button/paper-button.html" rel="import">
<dom-module id="my-dom-element">
<template>
<div>
<paper-button raised>button 1</paper-button>
</div>
</template>
<script>
Polymer({
is: 'my-dom-element',
ready: function () {
var button = document.createElement('paper-button');
button.raised = true;
button.querySelector('.content').textContent = 'button 2';
Polymer.dom(this.root).appendChild(button);
}
});
</script>
</dom-module>
有关详细信息,请参阅 Polymer.dom
。
选项 2(惯用语,使用条件模板)
这里我们使用 Polymer 的本地语言根据条件(在本例中为 属性 值)创建按钮元素。
<!-- my-conditional-dom-element.html -->
<link href="bower_components/polymer/polymer.html" rel="import">
<link href="bower_components/paper-button/paper-button.html" rel="import">
<dom-module id="my-conditional-dom-element">
<template>
<div>
<template is="dom-if" if="{{success}}">
<paper-button raised>
Conditional Button
</paper-button>
</template>
</div>
</template>
<script>
Polymer({
is: 'my-conditional-dom-element',
properties: {
success: {
type: Boolean,
value: true
}
}
});
</script>
</dom-module>
有关详细信息,请参阅 helper elements。
我个人的看法是,Polymer 用于创建组件的 DSL 相当干净,如果可能,最好利用它。
您需要使用 Polymer.dom api 设置 textContent
。
以下代码将起作用:
<paper-button raised>static</paper-button>
<script>
var button = document.createElement('paper-button');
button.raised = true;
Polymer.dom(button).textContent = 'dynamic';
document.body.appendChild(button);
</script>
我有以下 html:
<paper-button raised>Static</paper-button>
<script>
var button = document.createElement('paper-button');
button.textContent = "dynamic";
button.raised = true;
document.body.appendChild(button);
</script>
如果我静态添加纸张按钮,它会正常呈现,但我动态地做了几乎完全相同的事情,我没有得到任何动画。
如果我动态添加纸按钮,我需要做些什么特别的事情吗?
在 Polymer 1.0 中,有几种方法可以做到这一点。
选项 1(使用 document.createElement
)
更新:我认为@Kasper 的回应是使用 Polymer.dom 时更好的方法,因为它允许我们直接插入 textContent 而不是通过内部 class.
<!-- my-dom-element.html -->
<link href="bower_components/polymer/polymer.html" rel="import">
<link href="bower_components/paper-button/paper-button.html" rel="import">
<dom-module id="my-dom-element">
<template>
<div>
<paper-button raised>button 1</paper-button>
</div>
</template>
<script>
Polymer({
is: 'my-dom-element',
ready: function () {
var button = document.createElement('paper-button');
button.raised = true;
button.querySelector('.content').textContent = 'button 2';
Polymer.dom(this.root).appendChild(button);
}
});
</script>
</dom-module>
有关详细信息,请参阅 Polymer.dom
。
选项 2(惯用语,使用条件模板)
这里我们使用 Polymer 的本地语言根据条件(在本例中为 属性 值)创建按钮元素。
<!-- my-conditional-dom-element.html -->
<link href="bower_components/polymer/polymer.html" rel="import">
<link href="bower_components/paper-button/paper-button.html" rel="import">
<dom-module id="my-conditional-dom-element">
<template>
<div>
<template is="dom-if" if="{{success}}">
<paper-button raised>
Conditional Button
</paper-button>
</template>
</div>
</template>
<script>
Polymer({
is: 'my-conditional-dom-element',
properties: {
success: {
type: Boolean,
value: true
}
}
});
</script>
</dom-module>
有关详细信息,请参阅 helper elements。
我个人的看法是,Polymer 用于创建组件的 DSL 相当干净,如果可能,最好利用它。
您需要使用 Polymer.dom api 设置 textContent
。
以下代码将起作用:
<paper-button raised>static</paper-button>
<script>
var button = document.createElement('paper-button');
button.raised = true;
Polymer.dom(button).textContent = 'dynamic';
document.body.appendChild(button);
</script>