【发布时间】:2019-10-13 15:23:16
【问题描述】:
我尝试将这个示例 this 实现到聚合物中,因为我需要在输入中显示标签。
我刚试过
- html:
<div id='comp' class="item">
<form id="formC">
<div class="item-label edit">
<iron-ajax url="/url" last-response="{{resp}}" auto></iron-ajax>
<vaadin-combo-box id="Box" name="Box" selected-item="{{label}}"
placeholder="Please select" items="[[resp]]" item-value-path="label"
item-label-path="label" value$='[[data.label]]' name='label' >
</vaadin-combo-box>
</div>
<div class="item-valu edit">
<input size="8" name="valu" value$='[[data.valu]]'>
</div>
</form>
</div>
- 脚本
ready(){
const combobox = Polymer.dom(this.root).querySelector('vaadin-combo-
box');
combobox.items = [
{label: 'One', nilai: 1},
{label: 'Two', nilai: 2},
{label: 'Three', nilai: 3}
];
combobox.addEventListener('selected-item-changed', function() {
alert("selected-item-change" + JSON.stringify(combobox.selectedItem));
});
combobox.addEventListener('value-changed', function() {
alert("value-change" + combobox.nilai );
});
}
在组合框addEventListener 上有一个错误Uncaught TypeError: Cannot read property 'addEventListener' of null 但错误来自queryselector
更新 1.:使用 Polymer.dom(this.root).querySelector 的 querySelector 成功
更新 2.:仍然不明白为什么 combobox.nilai '未定义'
更新 3.:它可以工作 combobox.selectedItem.nilai ^^ 天哪,谢谢大家.. 现在我只需要注入价值
【问题讨论】:
-
你为什么使用
$this而不是this?你希望$this.$.comp是谁? -
拜托,我只是编辑我的代码,希望更清楚理解
-
你检查过这里的例子吗?在Allow custom Values 下也许你可以试试
customElements.whenDefined('vaadin-combo-box').then(function() {块 -
那么
this.$.comp呢?什么是组件? -
@masbrojo 多一点上下文会有所帮助.. 我想通过 this.$.comp 您正试图通过 ID 获取该 div.. 请注意,这不适用于以下元素有条件地呈现(例如,如果它是 if 的一部分).. 所以你可以尝试用
this.shadowRoot.getElementById('comp')替换this.$.comp看看它是否有任何不同
标签: javascript polymer vaadin