2016-08-05 4 views
0

내 목표는 구성 요소 A가 동작 일 때 구성 요소 B에 대한 동작을 실행합니다. 물론 컴포넌트 A는 이벤트를 내보내고 이것은 컴포넌트 B에 대한 입력입니다. 사용자가 구성 요소에서 하나 개의 요소를 삭제 클릭각도 2RC4 설정 기 (또는 변경 감지)

http://plnkr.co/edit/A3cE4M

에서

봐 제거하고 이벤트가 방출된다. 구성 요소 B에서 동일한 목록을 표시합니다 (그리고 작동합니다). 또한 구성 요소에 사용 기능 집합 목록이있는 경우도 JaroFoo_counter 증가해야합니다. init과 첫 번째 제거 후에 만 ​​증가합니다.

이유를 모르겠습니다. _list이 변경 될 때마다이 증분을 강제로 늘릴 수 있습니까?

미리 도움을 청하십시오.

+0

의 기사를 읽어 보시기 바랍니다 [A, 최소 완료하고 검증 가능한 예제를 만드는 방법] (http://stackoverflow.com/help/mcve). –

답변

0

이것은 예상되는 동작입니다. 출력은 동일한 배열을 여러 번 내 보낸다. 처음으로 변경된 것으로 인식됩니다 (null에서 배열로). 이후 동일한 배열이 다시 출력 될 때 변경 감지는 변경 사항으로 변경하지 않으며 업데이트가 발생하지 않으므로 setter를 호출하지 않습니다.

당신은 slice() 새로운 배열 인스턴스를 생성하기 때문에

this._list = this._list.slice(); 

는 각각의 변화가 인식하여 각 수정 후 배열의 복사본을 생성합니다.

Plunker example

+0

고마워, 네 말이 맞아. 하지만 내가 어떻게 dirrerent 배열 opertions 또는 다른 유형에 setter와 함께 작동해야합니다. 개체 http://plnkr.co/edit/A3cE4M 코드를 다시 작성한 지금 동일합니다. 객체 propery는 changind이지만 setter 함수는 사용하지 않습니다. 나는 부울이나 문자열/숫자와 같은 것이 두려울 것이다. – jaroApp

+0

Object는 array와 같지만 string, number, boolean과 같은 기본 값의 변경은 항상 인식됩니다. –

+0

개체 수정 후 무엇을 탐지해야합니까? 또는 array.push 이후. 'this_list = this_list'는 물론 작동하지 않습니다. 나를 위해 명확하지 않습니다. 아마 각각의 행동을 위해 나는 다른 것을해야합니다. – jaroApp