2013-06-24 5 views
1

사이에 내가 AngularJS와 꽤 새로운 그리고 난 코드의 작은 부분에 잠겨있어 전환합니다. 내 컨트롤러에는 각 라디오 옵션에 대한 json 배열이 있습니다.각도 JS 모델

어떻게 내가 선택한 라디오 버튼에 따라 테이블 데이터를 동적으로 바인딩 할 수 있습니까?

예 : 나는 A와 B 선택 사항이있는 라디오를 가지고 있습니다.

$scope.choice = 'A' 
$scope.A = {name: 'A', propA: 'Aprop'} 
$scope.B = {name: 'B', propB: 'Bprop'} 
$scope.gridOptions = ????? 

가 사전에 감사합니다

<div class="btn-group"> 
      <button type="button" class="btn btn-primary" ng-model="choice" btn-radio="'A'">A</button> 
      <button type="button" class="btn btn-primary" ng-model="choice" btn-radio="'B'">B</button> 
     </div> 
<div class="gridStyle" ng-grid="gridOptions"> 
     </div> 

컨트롤러는 세 가지 배열을 얻었다.

찰리 당신은 $ scope.choice를 볼 수 있습니다

+0

간단한 질문 : 라디오 요소에 btn-radio가 무엇입니까? 그것은 가치를위한 보조제입니까? 편집 : 나는 부트 스트랩 버튼 라디오 같아요. – Narretz

+0

라디오 버튼 용 앵글 - 부트 스트랩 (angular-ui) 구성 요소. btnradio 지시문은 컨트롤러의 $ scope.choice 값을 전환합니다. – Tcharl

답변

2

는 :

$scope.$watch('choice', function(newVal, oldVal) { 
    $scope.gridOptions = $scope.choice; 
}); 

이는 전체 $ scope.A 객체에 $ scope.choice를 설정해야합니다. 부트 스트랩 라디오 버튼과 함께 작동하는지 모르겠지만 일반적인 각도 라디오 버튼과 함께 작동합니다.

+0

예, $ watch가 좋습니다. 나는 다음에 각진 문서를 읽을 것입니다. 고맙습니다! – Tcharl

2

범위를 설정할 수 있습니다. gridOptions에 할당되는 데이터를 교체하는 "choice"에서 $ watch expression. 컨트롤러

$scope.$watch('choice', function(newValue, oldValue) { 
    if ($scope.choice == 'A') { 
     $scope.gridOptions = ?????? 
    } else { 
     $scope.gridOptions = ????? 
    } 
}) 

편집 내부

: 시계 표현 만 다이제스트주기 동안 불리는 $ 다이제스트는 필요하지 않습니다.

+1

$ watch.dagest()는 $ watch가 어쨌든 다이제스트주기를 트리거하기 때문에 호출 할 필요가 없습니다. – Narretz

+0

좋은 지적, 나는 오늘 뭔가를 배웠다. – ehfeng