4

テンプレート内でテンプレートを繰り返すことは可能ですか? 私はこのようなものが欲しいです:

<polymer-element name="polymer-mylement">
<template>
   <div class="col-xs-12 col-sm-12 col-md-12">
      {{ myobject.stringone }}
      <br>
      {{ myobject.stringtwo }}
      <br>
      <table>
        <tbody>
          <tr template repeat="{{ a in myobject.as}}" >
            <td>{{ a.type }}</td>

            <tr template repeat="{{ b in a.bs }}">
              <li>
                {{ b.type }}
              </li>
            </tr>
          </tr>
        </tbody>
    </table>
   </div>
</template>
<script type="application/dart" src="polymer_myelement.dart"></script>
</polymer-element>

Polymer_mylement.dart

import 'dart:html';
import 'dart:core';
import 'package:polymer/polymer.dart';
import 'dart:typed_data';
import 'protobuf/***/myobject.pb.dart';  
import 'package:custom_element/custom_element.dart';
import 'package:intl/intl.dart';

class MyObject { 
   String string1;
   String string2;
   List<a> as;

   MyObject(this.string1, this.string2, this.as);
}

class a {
   String type;
   List<b> bs;

   a(this.type, this.bs);
}

class b {
   String type;

   b(this.type);
}

@CustomTag('polymer-myelement')
class MyObjectElement extends PolymerElement with ObservableMixin {

    bool get applyAuthorStyles => true;

    @observable MyObject myobject;
}

main() {

  void onDataLoaded(ByteBuffer response) {

    Uint8List li = new Uint8List.view(response);
    MyObject myobject = new MyObject.fromBuffer(li);

    List<a> as = new List();
    List<b> bs = new List();

    for(final a in myobject.as) {
       for (final b in a.bs){
          bs.add(new b(b.type));
       } 
       as.add(new a(a.type.toString(), bs));
    }

    MyObject myobject = new MyObject(myobject.string1, myobject.string2, as);


 var myElem = createElement('polymer-myelement');
 MyObjectElement moele = myElem.xtag;
 moele.myobject = myobject;
 query('.container').children.add(myElem);



}

query('#menu-mylement').onClick.listen((MouseEvent event){

   query('.container').children.clear();

   try { 
     var url = "*****";
     var request = new HttpRequest();
     request.open('GET', url);
     request.responseType = "arraybuffer";
     request.onLoad.listen((event) => onDataLoaded(event.target.response) 
       //print('Request complete ${event.target.response}')
     );
     request.send();
     }
     catch (e) {
        print(e);
     }

 });
}

ご覧のとおり、リストを含む MyObject があります。"a" のリスト要素には、別のリストがあります。一般的に、main() メソッドで、WebService から protobuf データをフェッチします。私の onDataLoaded では、バイナリ文字列を読み取り可能な形式に変換します。ここで、MyObject を作成し、Response を介していくつかのループを介して ListElements を入力します。

私のテンプレートでは、結果をレンダリングしたいと思います。

2 番目のテンプレートの繰り返しまで機能します。MyObject から string 1 と string2 が表示され、List からの型も表示されます。しかし、彼は私のリストの2番目の繰り返しを見せてくれませんか?

それは可能ですか、それとも強制的な間違ったことをしていますか?

4

1 に答える 1

1

上記の私のコメントを参照してください。ブラウザがその 2 番目のテンプレートの結果をレンダリングすることを拒否している可能性がありtrますtr。に切り替えた後、正常に動作しているように見えるコードの JavaScript バージョンを次に示しtdます。

于 2013-10-02T18:05:58.397 に答える