voter-taker 컴포넌트 생성

root 컴포넌트와 voter 컴포넌트 사이에 voter-taker 컴포넌트를 하나 추가한다.

부모 템플릿은 아래와 같다.

전체 스크립트는 아래와 같다.  전과 동일하게 작동하는지 테스트해보자.

root ->  voter-taker -> voter

 

voter 컴포넌트 확장

이제 voter 컴포넌트를 2개 더 생성해서 3개를 만들자.

voter-taker가 가지고있는 데이터는 다음과 같다.

voter-taker 가 가지는 이 데이터를 voter 자식 컴포넌트에게 어떻게 넘겨줘야 할까?

v-for 구문을 사용하여 반복하고 객체로 데이터를 넘긴다.

그러나 콘솔창에 리스트를 유니크하게 구분할 키 값이 없다고 아래와 같은 waringin이 발생한다.

vue.js:603 [Vue tip]: <voter v-for=”item in voters”>: component lists rendered with v-for should have explicit keys. See https://vuejs.org/guide/list.html#key for more info.

found in

—> <VoterTaker>
<Root>

key에 index 값을 할당해준다.

객체를 bind할때는 아래와 같이 이름을 생략하고 한번에 바인딩할수 있다. v-bind=”item”

 

agree, disagree 버튼을 누르면 voter-taker 에게 전달하여 찬성 반대 숫자를 집계해서 보여주도록 하자.

voter에서 agree, disagree 버튼을 누르면 해당 데이터를 객체로 해서 이벤트로 emit 해서 넘긴다.

voter-taker에서는 객체의 이름에 매피하는 result 값을 업데이트 한뒤에 전체 찬성과 반대 를 집계한다.