子Web组件不接收数据对象

时间:2016-03-17 18:47:55

标签: polymer polymer-1.0 dart-polymer

我有一个父网络组件说:

<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组件?

1 个答案:

答案 0 :(得分:0)

您需要将@Observable更改为@property组件,以解决问题。