2014-09-30 2 views
1

Select 요소에 각도 ng-options 특성에 추가 논리를 포함 할 수 있는지 알고 싶습니다.각도를 사용하여 Select 요소에 조건부 그룹화를 구현하려면 어떻게해야합니까?

한 가지 경우로, 나는 플랫하고 그들과 관련된 그룹핑이없는 옵션 세트가 있습니다. 다른 경우 동일한 설명이 가능한 여러 옵션이 있지만 각 ID는 범주별로 그룹화되어 있기 때문에 다양합니다. 보낸 데이터를 기반으로 그룹화 된 그룹으로 표시할지 그룹으로 표시하지 않을지 선택합니다.

그룹화 :

<select ng-model="tcCtrl.SelectedItem" 
     ng-options="item.Id + ' - ' + item.Description 
        group by item.GroupDescription 
        for item in ctrl.Context.ItemList }"></select> 

가 그룹화되지 :

<select ng-model="tcCtrl.SelectedItem" 
     ng-options="item.Id + ' - ' + item.Description 
        for item in ctrl.Context.ItemList }"></select> 

조건부 GROUPED?

가능하면 두 개의 분리 된 select 요소 인스턴스가있는 것을 피하고 싶습니다. 그러나 ngSelectDirective 구문 분석기가 실제로 조건부 논리를 사용한다고 생각하지 않습니다.

이와 비슷한 것을 구현하는 좋은 방법에 대한 생각은 무엇입니까?

업데이트 : 다음은 제안 된 시도가 보이는 방식입니다. 문자열을 작성하는 '논리'가없는 경우에도 마찬가지입니다.

var optionStr = "item.Id for item in ctrl.Context.Items"; 
...<select ng-options="{{ ctrl.optionStr }}"></select>... 

문제는 제본하려고 시도 할 때 제본하려고하지 않는 것입니다. 생성 된 동일한 문자열을 가져 와서 {{속성}}을 바꾼다면 제대로 작동합니다. 심지어 문자열이 마크 업에서 렌더링되고 있음을 크롬에서 확인할 수 있습니다.

업데이트 : 나는 제안 된 방법이 매우 살균 된 환경에서 효과가 있다는 것을 입증했다. http://jsfiddle.net/xbws8r5h/

내 환경에는 변형이 있어야합니다.

+0

왜 'ctrl.optionStr'을 쓰려고합니까? 만약에'optionStr' 만 있으면됩니다. ng-controller에서 컨트롤러 객체를 정의합니다. '