2014-02-24 17 views
1

我想基於在組件屬性中設置的url執行HTTPRequest。我嘗試了它,如下所示,但dataUrl始終沒有。看起來組件的構造函數在組件中可用的屬性之前執行,這些屬性在html中設置。組件屬性爲none - 時間問題

如何告訴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

[可以在angular.dart構造函數中訪問HTML中設置的屬性嗎?](http://stackoverflow.com/questions/21172775/is-it-possible-to-access-attributes-set -in-html-in-angular-dart-constructor) –

+0

另請參閱http://stackoverflow.com/questions/21080837 和http://stackoverflow.com/questions/21061290 –

回答

1

實施NgAttachAware,並把你的代碼在attach方法。當調用attach時,屬性已經被評估。

+0

非常感謝!我會留下這個問題,因爲它不是一般的訪問屬性,而是關於初始化時間。 –