是否可以动态实例化传递JSON数据的自定义聚合物元素

时间:2015-10-29 13:32:42

标签: json dart polymer dart-polymer

是否可以将像JSON数组这样的复杂数据传递给动态实例化的自定义元素?

我想实例化一个传递给他一个大JSON数组的元素。 对于JSON数组的每一行,此元素将启动子元素,并将它们传递给JSON行。 我想知道如何将JSON数据传递给dinamically instantiated元素

像:

  1. <my-list>元素将通过首先检索JSON数据然后使用新获取的数据动态创建子元素来填充自身

  2. 对于每一行,它将以编程方式(从dart文件)创建<my-list-item myData="">,将给定的JSON数组行传递给<my-list-item>元素myData

  3. 有可能吗?如果是,那么在创建子元素时如何传递数据?

    我目前相当于my-list.dart:

    @PolymerRegister('my-list')
    class my-list extends PolymerElement {
      @property int listSize;        // number of blink tickets per panel
    
      MyList.created() : super.created() {
        //retrietve
        JSON data = //will find later how to use JSON
        //Init
        initializeList(data);
      }
    
      void initializeList(JSON data) {
        for row in data {
          BlinkTicket ticket = new BlinkTicket(row);
        }
    
      }
    }
    

    我的list-item.dart:

    @PolymerRegister('my-list-item')
    class MyListItem extends PolymerElement {
    
      @property JSON data;
    
      factory MyListItem() => new Element.tag('my-list-item');
    
      MyListItem.created() : super.created() {
        //init self with data
      }
    }
    

1 个答案:

答案 0 :(得分:1)

<dom-module id="my-list-item>
...
</dom-module>

@PolymerRegister('my-list-item')
class MyListItem extends PolymerElement {
  factory MyListItem() => new Element.tag('my-list-item');
  MyListItem.created() : super.created();

  @property Map data;
}

然后从未来的父元素中实例化它,如

List json = JSON.decode(getSomeJson());
for(var item in json) {
  var some = new SomeElement();
  Polymer.dom(root).append(some);
  // or to add it to the light DOM instead of the shady/shadow DOM
  // Polymer.dom(this).append(some);
  some.set('data', item);
}

(未经测试)