我有一个父网络组件说:
<my-datagrid data="{{subdata}}" columnHeaders="{{subheaders}}"></my-datagrid>
在我做的父母:
@property
List<Map> subdata;
@property
List<String> subheaders;
void attached(){
clear("subdata");
clear("subheaders");
addAll("subdata", getData());
addAll("subheaders", getHeaders());
}
这很简单直接。 my-datagrid
但似乎没有收到放入columnHeaders
所以在我的Created函数中,我说:
@property
List<String> columnHeaders;
@property
List<Map> data;
DivElement _header;
void attached(){
_header = $['headerRow'];
setColumns();
print(columnHeaders); //this these two items
print(data); //this both return null still
print("finsihed attached");
}
void setColumns(){
if (columnHeaders == null){ print("columns is null"); return; }
_header.children.clear();
for(int i = 0; i < columnHeaders.length; i++){
print(columnHeaders[i]);
var col = new DivElement()
..setInnerHtml(columnHeaders[i]);
_header.children.add(col);
}
}
因为我在on create中定义它。我认为它首先创建子元素,然后创建父元素,因此它创建子数据为null并传递它们。
我尝试了另一种方法,将函数getData / getHeaders设置为静态函数,并在实例化中设置它们,如:
@property
List<Map> subdata = getData();
@property
List<String> subheaders = getHeaders();
但这也没有用。我错过了什么阻止数据传递到子web组件?
答案 0 :(得分:0)
您需要将@Observable
更改为@property
组件,以解决问题。