2014-05-13 5 views
0

Angular를 처음 접했으므로 모범 사례와 우려 사항에 대한 질문입니다.각도 : div의 '펼쳐진'상태는 어디에서 추적해야합니까?

의 내가

<div ng-controller='SomeCtrl'> 
    <div ng-repeat="item in list"> 
    <div class='item'> 
     {{ item.name }} 
    </div> 
    </div> 
</div> 

가의 각 '항목이'확장 또는보기에서 축소 할 수 있습니다한다고 가정 해 봅시다 다음과 같은 설정을 가지고 있다고 가정 해 봅시다. 따라서 각 항목에 대해 상태에 대한 부울이 있습니다. 컨트롤러에 expanded = [...booleans...]이 있고 각보기에서 ng-class="{ active: expanded[index] }"을 사용하는 것이 적절합니까?

각 항목의 확장 된 상태를 어디에 보관할지 잘 모르겠습니다.

답변

1

사용 지시문 : 당신의 HTML 쓰기에서 다음

app.directive('expandable', function() { 
    return { 
    restrict: 'A', 
    link: function(scope, elem, attrs) { 
     var expanded = false; 

     var toggleExpansion = function() { 
     // Do something with elem here based on expanded variable 
     }; 

     elem.click(function(e) { 
     toggleExpansion(); 
     }); 
    } 
    } 
}); 

:

<div ng-controller="SomeCtrl"> 
    <div ng-repeat="item in list" expandable></div> 
</div> 

이 방법, 당신은 컨트롤러에 뷰 로직을 유지하지 않으며, 각각의 상태 확장 가능 항목은 범위에서 개별적으로/별도로 관리됩니다.

+0

답변을 작성하기 전에 알아 두십시오. 감사합니다! 지침은 너무 굉장하지만 옳은 일을하기는 어렵습니다. –