2013-06-24 17 views
1

之間相當新的AngularJs,我鎖定的代碼一小部分:角JS切換我的模型

在我的UI,我有一個單選按鈕和表(NG-網格)。 在我的控制器中,我爲每個廣播選擇都有一個json數組。

如何動態綁定依賴於所選單選按鈕的表格數據?

例如: 我有一臺有A和B選擇的收音機。

<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 = 'A' 
$scope.A = {name: 'A', propA: 'Aprop'} 
$scope.B = {name: 'B', propB: 'Bprop'} 
$scope.gridOptions = ????? 

預先感謝您。

查理

+0

一個簡單的問題:無線電元件中的btn-radio是什麼?它是價值的替代品嗎?編輯:我想這是一個引導按鈕收音機等值。 – Narretz

+0

用於單選按鈕的Angular-bootstrap(angular-ui)組件。 btnradio指令將切換控制器中的$ scope.choice值。 – Tcharl

回答

2

你可以看$ scope.choice:

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

這需要你設置$ scope.choice整個$ scope.A對象。我不知道這是否適用於引導單選按鈕,但它適用於正常的角度單選按鈕。

+0

是的,$ watch看起來不錯。我想我會在下次閱讀角度記錄。謝謝! – Tcharl

2

您可以在「選擇」上設置一個作用域。$ watch表達式,用於替換分配給gridOptions的數據。

內部控制器

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

編輯:$消化是沒有必要的,因爲手錶的表達摘要週期中只調用。

+1

不應該有必要調用$ scope.digest(),因爲無論如何$ watch觸發一個摘要循環。 – Narretz

+0

好點,今天我學到了一些東西。 – ehfeng