페이지의 블록 집합을 확장하거나 축소하는 각도 지시문을 구현하고 있습니다. 이 지시문은 매개 변수로 "확장 가능 항목"집합을 필요로하며 모든 속성은 isExpanded
속성을 가져야합니다. 확장이 같은 모습을 축소해야Angularjs의 계산 된 배열
<expand-collapse-all expandable-items="expandableItems"></expand-collapse-all>
블록은 :
<ul>
<li ng-repeat="group in groups">
<block items="group.items" library="group.library"></block>
</li>
</ul>
expandableItems
배열은 다음과 같이 형성된다 :
_.forEach(groups, group => {
expandableItems.push(group.library);
});
문제는 내 expandableItems
는 "계산"해야한다는 것입니다 배열, 왜냐하면 isExpanded
은 라이브러리가 아닌 그룹의 속성이며 그룹을 추가하거나 삭제할 수 있기 때문에 수동으로 업데이트하고 싶지 않습니다.일부 그룹이 추가되거나 제거 될 때마다 배열이입니다.
그룹 개체를 확장 가능하게 만들고 (그룹에 isExpanded
속성 추가) 전체 항목을 항목과 라이브러리를 개별적으로 전달하는 대신 블록 지시문에 전달하면 내 문제를 해결할 수 있습니다. 그러나 나는 그것이 지금과 같을 때 그것이 어떻게 풀릴 수 있는지 아직도 궁금하다.
저는 knockoutjs에 대해 더 잘 알고 있습니다. knockoutjs에서는 expandableItems
을 ko.computed
으로 정의하면 쉽게 달성 할 수 있음을 압니다. 나는 angularjs에서 비슷한 일을 어떻게 할 수 있는지 알 수 없다. 어떻게 든 expand-collapse-all
에 함수를 전달하면 expandableItems
배열을 다시 계산할 수 있습니까? 이 일을
나는 시도했다 :
<expand-collapse-all expandable-items="getExpandableItems(groups)"></expand-collapse-all>
페이지의 컨트롤러의 생성자에서
getExpandableItems(groups)
을 정의
,하지만 난 얻을 오류 을 "오류 :. 10 $ 다이제스트() 반복에 도달 중단!"
비슷한 질문이 http://stackoverflow.com/questions/18242816/bind-an-angularjs-directive-to-a-mapping-of-an-array에 있습니다. – Nat