我想基于url执行HTTPRequest,该url在组件属性中设置。我尝试过如下所示,但dataUrl始终没有。似乎组件的构造函数在组件可用的属性(html中设置)之前执行。
如何判断HTTPRequest要等到dataUrl变量可用?
component.dart
class TableData {
static List data = [];
TableData() {}
//GETTERS
List get getData => data;
}
@NgComponent(
selector: 'jstable',
templateUrl: 'jstable/jstable_component.html',
cssUrl: 'jstable/jstable_component.css',
publishAs: 'cmp'
)
class JSTableComponent {
@NgAttr('name')
String name;
@NgAttr('data-url')
String dataUrl;
TableData _table_data = new TableData();
final Http _http;
bool dataLoaded = false;
JSTableComponent(this._http) {
_loadData().then((_) {
dataLoaded = true;
}, onError: (_) {
dataLoaded = false;
});
}
//GETTERS
List get data => _table_data.getData;
//HTTP
Future _loadData() {
print("data url is");
print(dataUrl);
return _http.get(dataUrl).then((HttpResponse response) {
TableData.data = response.data['data'];
});
}
}
html的
<jstable name="myjstablename" data-url="table-data.json"></jstable>
答案 0 :(得分:1)
实施NgAttachAware
并将您的代码放入attach
方法中。调用attach
时已经评估了属性。