我有一点问题,无法解决问题。我创建了一个带复选框的表,它正常工作,可以毫无问题地保存到json。现在我想让我的复选框在页面加载时从json数据设置默认值(以便更容易编辑)。无论如何,这是我的代码:
//row index
var index = 0;
//gets full info of student
var responseStudent = rpc.call('db.findOne', ['StudentAnket', {
'_id': '${this.objId}'
}]);
result = responseStudent['result'];
//gets info needed for my table
//{anket: true, request: true, statement: false, etc...}
var resultMat = result['listmaterial'];
//materials is a list which contains id, name of rows
materials.forEach((m) {
//creating table body
index = index + 1;
tbody.append(new Element.tr()
..append(new TableCellElement()..text = index.toString())
..append(new TableCellElement()..append(new LabelElement()
..text = m['name']
..setAttribute('for', m['id'])))
..append(new TableCellElement()..append(new InputElement()
..id = m['id']
..type = "checkbox"
..checked = "VALUE TAKEN FROM JSON")));
});
那么如何从resultMat获取键和值并为每个复选框设置checked属性?
编辑:
List materials = [{
'id': 'anket',
'name': 'Student anket'
}, {
'id': 'request',
'name': 'Request'
}, {
'id': 'statement',
'name': 'Statement'
}, {
'id': 'marklist',
'name': 'Mark List'
}];
答案 0 :(得分:1)
您的materials
结构外观的信息并不清楚。列表只有一个值而不是两个(' id,'行名称')。首先,您必须确保您的JSON不是String而是Dart数据结构(列表,地图,值)。
您可以查看此问题的答案,了解其工作原理 Dart Parse JSON into Table
然后你应该能够访问像
这样的值..checked = resultMat[m['id']] ;