首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用dom-repeat设置下拉值

如何使用dom-repeat设置下拉值
EN

Stack Overflow用户
提问于 2018-02-20 08:17:45
回答 1查看 269关注 0票数 0

如果满足特定条件,我正在尝试从下拉列表中选择第二个选项,我的selectedIndex有问题

代码语言:javascript
复制
<select id="contact" on-change="selectContact">
  <option  value="-1" selected>Select Contact</option>
  <template is="dom-repeat" items="[[contacts]]" as="contact" index-as="index">
     <option value="[[contact]]">[[contact]]</option>
  </template>
</select>

<select id="name" on-change="selectName">
  <option  value="-1" selected>Select Name</option>
    <template is="dom-repeat" items="[[names]]" as="name">
      <option value="[[name]]">[[name]]</option>
    </template>
</select>

..。

代码语言:javascript
复制
selectContact() {
  for (let i = 0; i < this.customerTable[0].length; i++) {
    if(true) {
        array[i] = this.customerTable[0][i]['name'];
      }
  }
  this.names = this.$.util.utilFn(array);


  if(this.names.length == 1) {
    this.shadowRoot.querySelector('#name').selectedIndex = 2;
  }

}

如何选择dom-repeat下拉菜单的第二个子项?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-02-20 12:13:26

selectContact()中,您设置了this.names (绑定了第二个<dom-repeat>.items ),并在DOM实际更新之前立即尝试选择该<dom-repeat>的第一项。

实际上,您需要等到使用Polymer.RenderStatus.afterNextRender()的下一个渲染帧后才能选择该项目:

代码语言:javascript
复制
selectContact() {
  this.names = ['John'];

  if (this.names.length === 1) {
    Polymer.RenderStatus.afterNextRender(this, () => {
      this.shadowRoot.querySelector('#name').selectedIndex = 1;
    });
  }
}

demo

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48876125

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档