html - 在 Polymer.dart 中使用列表

标签 html list templates dart polymer

我有一个使用 Dart 的 Polymer 元素。该元素包含一个简单的数字列表,这些数字显示在它们自己的 div 标记中。元素顶部有一个计数器,用于显示此列表中有多少元素。

最初,元素显示正确,但我在元素顶部放置了一个按钮,应该向列表添加一个项目,并更新计数器。计数器已更新,项目已添加到列表中(如打印所示),但 DOM 未更新。

我是在期待不应该发生的事情还是我在这里做错了什么?

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

<polymer-element name="list-test">
  <template>


    <button on-click="{{click}}">Click</button>
    <div>Counter: {{count}}</div>

    <template repeat="{{num in nums}}">
      <div>{{num}}</div>
    </template>


  </template>
  <script type="application/dart">
    import "dart:async";
    import "package:polymer/polymer.dart";

    @CustomTag("list-test")
    class listTest extends PolymerElement {

      listTest.created() : super.created();

      @observable List nums;
      @observable int count;

      void attached() {
        nums = [0];
        count = nums.length;
      }

      void click() {
        nums.add(count++);
        print(nums);
      }
    }
  </script>
</polymer-element>

最佳答案

你需要改变这一行

nums = [0];

nums = toObservable([0]); 

或者更好地将它添加到字段初始化器中

@observable List nums = toObservable([0]);

否则,只会识别将另一个列表分配给 nums,而不会识别列表内的更改。

您的附加 方法缺少 super 调用

  void attached() {
    super.attached(); // <== added
    nums = toObservable([0]); // <== can be moved to the field initializer
    count = nums.length;
  }

关于html - 在 Polymer.dart 中使用列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25195154/

相关文章:

python - 如何从两个列表创建字典?

python - 使用递归返回嵌套列表中第二小的数字

java - 简单的 Java 列表问题

c++ - 声明模板类的模板友元函数

git - 如何将 git 用于项目模板?

html - 我可以在 p 之外使用 span 标签吗?

html - 如何使用 bootstrap4 将 CSS 应用于特定的 div 按钮?

javascript - 如果单击内部按钮,则关闭模态

c++ - 是否可以对参数包进行类型定义?

CSS <ul> 导航栏居中问题