【问题标题】:set vaadin-combo-box label and value properly in polymer在聚合物中正确设置 vaadin-combo-box 标签和值
【发布时间】:2019-10-13 15:23:16
【问题描述】:

我尝试将这个示例 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 ^^ 天哪,谢谢大家.. 现在我只需要注入价值

【问题讨论】:

  • 你为什么使用$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


【解决方案1】:

上面提到的hmtl 是否位于&lt;template&gt; 下?换句话说,你是在创建一个 Shadow DOM 吗?

如果是这样,document.querySelector('vaadin-combo-box'); 您正在“轻” DOM 中寻找组合框,显然那里没有组合框,因此返回 null。因此,当您尝试将侦听器添加到 null 时,会引发错误

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

这里有类似话题的讨论:

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

【讨论】:

  • 我知道我所指的例子不是聚合物,因为没有找到如何在聚合物中实现..我只是编辑我的代码@anasmi
  • 你能把你的整个html页面放上去吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-01-28
  • 2021-10-31
  • 1970-01-01
  • 2016-03-12
  • 1970-01-01
  • 1970-01-01
  • 2016-02-09
相关资源
最近更新 更多