2017-02-22 7 views
0

VueJS2와 Axios를 처음 사용하고 컴포넌트 내에서 데이터를 사용할 때 데이터를 가져 오는 방법을 이해하지 못했습니다.구성 요소와 Axios에서 사용할 때 데이터를 가져 오는 방법은 무엇입니까?

왜 내 테스트 작업을하지 않았습니까?

나는 콘솔에서 다음과 같은 오류가 발생합니다 :

은 [뷰는 경고] : "데이터"옵션은 구성 요소 정의의 인스턴스 당 값을 반환하는 함수이어야한다.

[Vue 경고] : 속성 또는 메서드 "symbols"은 인스턴스에 정의되어 있지 않지만 렌더링 중에 참조됩니다. 데이터 옵션에서 반응적인 데이터 속성을 선언해야합니다.

내 간단한 테스트 (루트 인스턴스에서 발견) :

내 데이터 (간결 냈다) :

[{"id":1, "name": "Airfield"}, {"id":2, "name": "Ship Yard"}] 

내 구성 요소 :

Vue.component('symbols-table', { 
    template: '<h1>Hello World</h1>', 
    data: { 
     symbols: [] 
    }, 
    created: function(){ 
     axios.get('symbols.json').then(response => this.symbols = response.data); 
    } 
}); 

인스턴스 인스턴스 :

var app = new Vue({ el: '#app' }); 

내 HTML : 객체를 반환하는 함수를 반환해야합니다 구성 요소 내부

<symbols-table> 
    <ul><li v-for="symbol in symbols">{{symbol.name}}</li></ul> 
</symbols-table> 

답변

4

하면 오류가 말하는대로 :

"데이터"옵션 구성 요소 data must be a function의 기능

해야합니다, 당신은 반환하는 기능으로 데이터 블록을 수정해야 DOMin 반응 방식으로 사용되는 데이터 구조 :

Vue.component('symbols-table', { 
    template: '<h1>Hello World</h1>', 
    data: function() { 
     return { 
      symbols: [] 
     } 
    }, 
    created: function(){ 
     axios.get('symbols.json').then(response => this.symbols = response.data); 
    } 
}); 
+0

고마워요! 사실 그것은 그 중 하나의 문제였습니다 ... 나는 그것을 알고 있었어야합니다. 그러나 콘솔에서 다음과 같은 오류가 발생합니다. "속성 또는 메서드"심볼이 인스턴스에 정의되어 있지 않지만 렌더링 중에 참조되었습니다. ". 내 코드는 위에서 언급 한 것처럼 보이지만 추가 된 데이터 함수를 사용합니다. 어떤 아이디어? – redshift

+0

@redshift problome은 자식 레벨에'symbols '을 가지고 있지만, 부모 레벨에서는 DOM에서 사용하고 있습니다. – Saurabh

+0

감사합니다. 그게 문제였습니다. – redshift

관련 문제