2017-02-10 5 views
2

배열을 기반으로하는 Vue 목록이 있으며 각 배열 항목은 배열 항목 속성을 바인딩하는 구성 요소를 렌더링합니다.Vue.js - 구성 요소 데이터가 업데이트되지 않습니다.

<div v-for="item in items"> 
     <item v-bind:item="item"></item> 
    </div> 

이 구성 요소는 바인더 제본 특성에 기초하여 혼합 데이터를 가지고

Vue.component('item', { 
    template: '<p>ID: {{item.id}}, {{component_id}}</p>', 
    props: ['item'], 
    data: function() { 
    return { 
     component_id: this.item.id 
    } 
    } 
}); 

문제는 그 어떤 방식으로 초기리스트 배열을 변경하는 경우, 성분의 혼합 소품 그것이 원래의 유지이다 원래의 바인드 된 데이터가 변경 되더라도 업데이트되고 변경되지 않습니다.

http://codepen.io/anything/pen/bgQBwQ

가 어떻게 구성 요소를 만들 수 있습니다 는 흐름 데이터 속성의 업데이트?

답변의 형태로 요청으로
+3

이 경우 [계산 된 속성] (https://vuejs.org/v2/guide/computed.html)을 사용하지 않아야합니까? – UnholySheep

+0

@UnholySheep 예! 감사. 나는 정말로 vuejs에 새로운 것이고 나는 계산 된 속성을 알지 못했고, 이제는 작동합니다. 엄청 고마워! http://codepen.io/anything/pen/GrwNew –

+0

@ UnholySheep, 투표를하고 다른 사람들을 도울 수 있도록 답변을 추가 할 수 있습니까? –

답변

2

다음 computed_id이 (제대로)입니다이 방법은 재 계산

Vue.component('item', { 
    template: '<p>Original: {{item.id}}, Mixed: {{component_id}}, Computed: {{computed_id}}</p>', 
    props: ['item'], 
    computed: { 
    computed_id: function() { 
     return this.item.id; 
    } 
    } 
}); 

: 다음 코드로 이어지는,이 경우

computed property 올바른 방법입니다 때마다 item 소품 변경.

+0

이것은 맞습니다.하지만 이제는 또 다른 질문이 있습니다. 특정 속성이 부모 데이터에서 오지 않는다면 어떻게 유지할 특정 값과 업데이트를 할 수 있습니까? http://codepen.io/anything/pen/vgQgeM 이것은 click 이벤트를 가지며 값을 업데이트합니다. 특정 항목에 대해 업데이트되지만 어레이가있을 때 남아 있습니다. 이견있는 사람? –

+1

@AdrianFlorescu 나는 당신이 달성하려고 시도하고있는 것을 100 % 확신하지는 않는다. (아마 당신은 그것을 위해 새로운 질문을 만들어야한다.) 만약 당신이 "데이터"를 통해 정의 된 "컴포넌트 로컬"변수와 소품의 변수를 결합하기를 원한다면 계산 된 값을 직접 수정하는 대신 계산 된 값 내에서 그렇게 할 수 있습니다 - 예 :'computed_id : function () {return this.item.id + this.id; }'(여기서'this.id'는 구성 요소'data' 섹션에 정의 된 변수입니다). 이것이 당신이 목표로하지 않은 것이라면 아마도 새로운 질문을 만들어야 할 것입니다. – UnholySheep

+0

새로운 질문을 만들어야하지만 질문에 답하려면 위의 펜을보고 행을 클릭하십시오. 값은 업데이트되지만 배열을 변경하면 해당 값이 사라지 길 원합니다. 왜 배열을 변경하더라도 정확히 같은 행에 왜 병이 있는지 확신 할 수 없습니다. –

관련 문제