1

你好:

我有一个paper-dropdown-menu从可观察变量填充的变量,每当变量更改时,我想重新选择第一项。然而,第一次它正常工作时,下一次它会继续选择第一次选择的第一个元素。这是组件的html和dart代码;

paper_dropdown_menu_bug_test.dart

import 'package:polymer/polymer.dart';

@CustomTag('paper-dropdown-menu-bug-test')
class PaperDropdownMenuBugTest extends PolymerElement {
  @observable List list;

  PaperDropdownMenuBugTest.created() : super.created(){
    this.list = [0, 1, 2];    
  }

  listChanged(){
    this.$["paper-dropdown-menu"].selected = 0;
  }

  changeList(){
    this.list = [3, 4, 5]; 
  }
}

paper_dropdown_menu_bug_test.html

<link rel="import" href="packages/polymer/polymer.html">
<link rel="import" href="packages/paper_elements/paper_dropdown_menu.html">
<link rel="import" href="packages/paper_elements/paper_item.html">

<polymer-element name="paper-dropdown-menu-bug-test">
  <template>
    <paper-dropdown-menu id="paper-dropdown-menu">
      <template repeat="{{item in list}}">
        <paper-item label="{{item}}"></paper-item>
      </template>
    </paper-dropdown-menu>
    <button on-click="{{changeList}}">Change List</button>
  </template>
  <script type="application/dart" src="paper_dropdown_menu_bug_test.dart"></script>
</polymer-element>

我做错了吗,有解决方法还是应该填写错误报告?(我已经尝试选择另一个索引,然后选择 0,但不起作用

提前致谢

4

1 回答 1

0

您需要添加valueattr="label"配置<paper-dropdown-menu>以使用标签值来选择项目。

<paper-dropdown-menu id="paper-dropdown-menu" valueattr="label">

一些额外的建议:

代替

listChanged(){
  this.$["paper-dropdown-menu"].selected = 0;
}

利用

<paper-dropdown-menu id="paper-dropdown-menu" selected="{{selected}}" valueattr="label">
@observable var selected;

listChanged() => selected = list.first;

如果你写它有同样的效果

@observable List list = [0, 1, 2];

PaperDropdownMenuBugTest.created() : super.created()

或者

@observable List list;

PaperDropdownMenuBugTest.created() : super.created(){
  this.list = [0, 1, 2];    
}
于 2014-10-22T05:29:56.080 回答