设置vaadin-combo-box标签并在聚合物中正确设置值

时间:2019-05-28 06:46:18

标签: javascript polymer vaadin

我尝试将示例this实施到聚合物中,因为我需要在输入中显示标签。

我刚刚尝试了

  1. 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>

  1. 脚本
        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 ^^上帝,所有人..现在我只需要注入值

1 个答案:

答案 0 :(得分:1)

上述hmtl是否位于<template>下?换句话说,您是否要创建Shadow DOM?

如果是这样,那么到document.querySelector('vaadin-combo-box');,您正在“轻” DOM中寻找组合框,并且显然那里没有组合框,因此返回了null。因此,当您尝试将列表器添加到null

时,将引发错误。

但是,否则,具有comp id的组件是什么?您将需要以相同的方式访问您的组合框。

这里有关于类似主题的讨论:

此外,官方文档中的示例可能会有所帮助:Handle and fire events