2014-02-24 2 views
1

구성 요소 특성에 설정된 URL을 기반으로 HTTPRequest를 수행하려고합니다. 나는 아래와 같이 시도했지만 dataUrl은 항상 none이다. html로 설정된 속성이 구성 요소에서 사용 가능하기 전에 구성 요소의 생성자가 실행되는 것처럼 보입니다.구성 요소 특성이 없음 - 타이밍 문제입니다.

dataUrl 변수를 사용할 수있을 때까지 대기하도록 HTTPRequest에 지시 할 수 있습니까?

<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-an-angles-dart-constructor) –

+0

또한보십시오 http://stackoverflow.com/questions/21080837 및 http://stackoverflow.com/questions/21061290 –

답변

1

.html 중에서 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']; 
    }); 
    } 
} 

NgAttachAware을 구현하고 attach 방법에 코드를 넣어. 속성은 attach이 호출 될 때 이미 평가됩니다.

+0

고마워요! 나는 속성에 접근하는 것에 대해 일반적인 것이 아니기 때문에 질문을 공개적으로 남겨 둘 것이다. –

관련 문제