2013-05-22 2 views
2

내 JSON 데이터는AngularJS와 겨 모델은 자기 정의 지시어를 사용 후 작동하지 않습니다

[{이름과 같다 : "A", 내용 : [{이름 : "B"콘텐츠를 : {이름 : "c", id : 1}, {...}}}, {...}}}, {이름 : "...", 내용 : [...]}]

그리고 "a"와 "b"가 모두 optionGroup 인 select에 넣으려는 경우 "c"만 옵션입니다. 이 같은 :


-b

  C

샘플 jsfidle은 여기에 있습니다 : http://jsfiddle.net/sunny_jerry/SHxBp/

는 "ngOptions은"내 요구 사항을 충족 수없는 것 같다 그래서 나는 다음과 같은 지시어를 정의한다 :

<select class="compo-tree" x-compo-tree colleges="colleges" ng-model="choice"></select> 

directive('compoTreeNew', function($compile) { 
    return { 
     restrict: 'A', 
     scope: { 
      colleges: "=colleges", 
      choice: "=ngModel" 
     }, 
     link: function($scope, elm){ 
      $scope.$watch("colleges", function(){ 
       angular.forEach($scope.colleges, function(college) { 
        elm.append($("<optgroup>").attr("label", college.name)); 
        angular.forEach(college["departments"], function(department) { 
         var optGroup = $("<optgroup>").attr("label", '- ' + department.name); 
         angular.forEach(department['disciplines'], function(discipline) { 
          optGroup.append($("<option>").attr("value", discipline.id).text(discipline.name)); 
          if (!$scope.choice) { $scope.choice = discipline.id; } 
         }); 
         elm.append(optGroup); 
        }); 
       }); 
      }); 
     } 
    } 
}); 

잘 작동하며 다른 옵션을 선택하면 범위가 변경되는 것을 확인할 수 있습니다.

하지만 초기화 값을 설정할 수 없다는 것을 알았고 언제든지 "선택"을 제어 할 수있는 옵션을 설정할 수 없다는 것을 알았습니다. 단방향 바인딩이 될 것으로 보이지만 필요합니다. 양방향 바인딩.

샘플 jsfidle은 여기에 있습니다 : http://jsfiddle.net/sunny_jerry/SHxBp/

내가 그것을 어떻게

를 해결할 수 ?

+0

한 가지 choice에 감시자를 설정, 그것을 작동하게하는 방법입니다. 귀하의'compoTreeNew' 지시자는 고립 된 범위를 사용하기 때문에 요소의 유일한 범위이고 그것은 부모 범위와 연결이 끊어져 있습니다. 이것은 동일한 요소에 내장 된 ng-model/selectController 기능을 깨뜨리는 부작용이있을 수 있습니다. – jpsimons

+0

@darkporter 직접 ng-model을 구현해야합니까? – Sunny

답변

0

여기에 단지 각 요소는 하나의 범위를 가지고 있다는 것입니다 염두에두고

$scope.$watch('choice', function(val) { 
    elm.val(val); 
}); 

http://jsfiddle.net/SHxBp/2/

+0

도움을 주셔서 감사합니다. 빈 옵션이 선택 항목에 표시되고 클릭 한 후에 처음으로이 빈 옵션을 제거하는 것에 대한 아이디어가 있습니까? – Sunny

관련 문제