我想創建自定義表格元素, 如何通過知道其字段名稱來重複動態對象?聚合物表中的模板重複動態對象
<tr template repeat="{{row in rows}}">
<td template repeat="{{field in fields}}">
{{row.field}}
</td>
</tr>
table_elemnet.html
<polymer-element name = "table-element" attributes ="structure data">
<template>
<table class="bordered" id="table_element">
<tr>
<th template repeat="{{col in cols}}">
{{col}}
</th>
</tr>
<tr template repeat="{{row in rows}}">
<td template repeat="{{field in fields}}">
{{row.field}}
</td>
</tr>
</table>
</template>
<script type="application/dart" src="table_element.dart"></script>
</polymer-element>
table_element.dart
import "package:polymer/polymer.dart";
/**
* Custom table element
*
*/
@CustomTag("table-element")
class Table extends PolymerElement {
@published List<Map<String,String>> structure; // table struture column name and value factory
@published List<dynamic> data; // table data
@observable List<dynamic> rows = toObservable([]);
@observable List<String> cols = [];
@observable List<String> fields = [];
static const COLUMN_NAME = "columnName";
static const FIELD_NAME = "fieldName";
Table.created():super.created();
void enteredView() {
super.enteredView();
structure.forEach((map) { cols.add(map[COLUMN_NAME]); fields.add(map[FIELD_NAME]);}); // populate columns and fields from table
rows.addAll(data);
}
}
屬性從測試元件的值:
List<People> data = [new People("name1","name2"),new People("name2","name4")];
List<Map<String,String>> structure = [{ "columnName" : "First Name", "fieldName" : "fname"},
{"columnName" : "Last Name", "fieldName" : "lname"}];
我ñ瀏覽器,我能夠看到列名而不是數據..
編輯:
我改變行使用鏢鏡子,現在行[現場]工作正常,當我鍵入List<Map<String,dynamic>>
和填充行我只是在看地圖。
if(data != null) {
data.forEach((element) { // kind of hackish dynamic object iteration
Map row ={};
fields.forEach((field) {
row[field] = reflect(element).getField(new Symbol(field)).reflectee;});
rows.add(row);
});
}
是沒有什麼辦法可以創建一個照顧反射邏輯的和在聚合物元件用它的自定義表達式..?
數據被填充細,如果我使用
我看到你寫了'能夠看到列名',我不知道爲什麼這個工作。你應該也驗證這是否工作在JavaScript解決了主要問題後,這種方式(數據不顯示) –
for row [field]我收到錯誤未捕獲錯誤:類'People'沒有實例方法'[]'。參數:[「fname」],任何特殊的東西我必須添加到我的人員類以這種方式訪問字段? – invariant