【问题标题】:Numeric for loop in Dart Polymer templatesDart Polymer 模板中的数字 for 循环
【发布时间】:2013-11-16 04:04:46
【问题描述】:

如何在聚合物自定义元素模板中编写数字 for 循环?我的意思是像

<template repeat="{{for i = 1 to 10}}">
<div>item</td>
</template>

在当前版本的 Dart 1.0 中可以吗?

【问题讨论】:

    标签: dart polymer dart-polymer


    【解决方案1】:

    目前不,这在 Polymer.dart(或据我所知的 Polymer.js)中是不可能的。重复绑定需要一个可迭代的(参见Polymer_expressions 库的重复模板部分)。不幸的是,由于Issue 12669,也无法使用列表文字来完成此操作。

    使用过滤器我们可以做到这一点:

    <!-- myelement.html -->
    
    <polymer-element name="my-element">
      <template>
        <div>
          <template repeat="{{ 5 | myFilter }}">
            <p>Write me {{ }}</p>
          </template>
        </div>
      </template>
      <script type="application/dart" src="myelement.dart"></script>
    </polymer-element>
    
    // myelement.dart
    
    import 'package:polymer/polymer.dart';
    import 'package:polymer_expressions/filter.dart';
    
    @CustomTag('my-element')
    class MyElement extends PolymerElement {
      final Transformer myFilter = new GenerateIterable();
    
      MyElement.created() : super.created();
    
    }
    
    class GenerateIterable extends Transformer<Iterable, int> {
      int reverse(Iterable i) => i.length;
      Iterable forward(int i) => new Iterable.generate(i, (j) => j + 1);
    }
    

    创建一个导入 myelement.html 并使用 &lt;my-element&gt;&lt;/my-element&gt; 的页面将输出:

    <div>
      <p>Write me 1</p>
      <p>Write me 2</p>
      <p>Write me 3</p>
      <p>Write me 4</p>
      <p>Write me 5</p>
    </div>
    

    【讨论】:

    • 感谢您的回答。我希望这将在下一个版本的 Dart 中成为可能。
    • 我已经更新了答案,展示了如何创建一个简单的过滤器来完成同样的任务
    • 此解决方案不适用于嵌套模板,例如:1
    • 虽然我不能确定,但​​我相信这可能与:dartbug.com/12742(基本上第一个全局模板中的变量没有显示在辅助模板中。
    猜你喜欢
    • 2010-11-09
    • 1970-01-01
    • 2012-07-13
    • 2019-05-23
    • 2017-08-06
    • 2021-10-17
    • 1970-01-01
    相关资源
    最近更新 更多