【问题标题】:Component Attribute is none - timing issue组件属性为无 - 时间问题
【发布时间】:2014-02-24 23:03:27
【问题描述】:

我想根据一个在组件属性中设置的 url 执行 HTTPRequest。我尝试如下所示,但 dataUrl 总是没有。似乎组件的构造函数是在 html 中设置的属性对组件可用之前执行的。

如何让 HTTPRequest 等到 dataUrl 变量可用?

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

【问题讨论】:

标签: dart angular-dart


【解决方案1】:

实现NgAttachAware 并将您的代码放入attach 方法中。调用 attach 时,属性已经被评估。

【讨论】:

  • 非常感谢!我会留下这个问题,因为它通常不是关于访问属性,而是关于初始化时间。
猜你喜欢
  • 2021-05-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-07-14
  • 1970-01-01
  • 2021-08-31
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多