我尝试将示例this实施到聚合物中,因为我需要在输入中显示标签。
我刚刚尝试了
<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 ^^上帝,所有人..现在我只需要注入值
答案 0 :(得分:1)
上述hmtl
是否位于<template>
下?换句话说,您是否要创建Shadow DOM?
如果是这样,那么到document.querySelector('vaadin-combo-box');
,您正在“轻” DOM中寻找组合框,并且显然那里没有组合框,因此返回了null
。因此,当您尝试将列表器添加到null
但是,否则,具有comp
id的组件是什么?您将需要以相同的方式访问您的组合框。
这里有关于类似主题的讨论:
此外,官方文档中的示例可能会有所帮助:Handle and fire events