2017-05-31 21 views
0

我的頁面上有7個不同的控制器,我想要一個自定義控制器,可以根據switch語句切換到七個控制器之一。對於前: -在angularjs中的開關控制器

//Custom Controller 
app.controller('custom_controller', function($http, $scope, $compile) { 

$scope.change = function() { 
    switch ($scope.data['model']) { 
     case 'Telecom': 
      $scope.controller = 'Telecom_Controller'; 
      break; 
     case 'Netflix': 
      $scope.controller = 'Netflix_Controller'; 
      break; 
     case 'Bank': 
      $scope.controller = 'Bank_Controller'; 
      break; 
     case 'Beauty': 
      $scope.controller = 'Beauty_Controller'; 
      break; 
     case 'Mutual Funds': 
      $scope.controller = 'MF_Controller'; 
      break; 
     case 'Motor Insurance': 
      $scope.controller = 'MI_Controller'; 
      break; 
     case 'Job Hunt': 
      $scope.controller = 'Job_Controller'; 
      break; 
     default: 
      alert("None Selected"); 
      break; 
    } 
}; 
}); 

然後在 'HTML' 我想相應切換到控制器,如: -

<div ng-controller={{ controller }}> 
</div> 

提前:)

+0

問題是什麼呢? –

+0

你將控制器定義爲公共功能,控制器的類型是類,你不能像在代碼中那樣做。如果您使用'ngRoute'或'ui-router'併爲每個狀態設置控制器,那麼更好,那麼您可以在控制器之間切換狀態。 – Maher

回答

0

感謝這似乎只是一個改變不好的設計,並從你的描述沒有跡象表明你需要做這樣的事情。

你能做什麼,而不是:

  • 創建組件和顯示/隱藏根據您的情況(優先選擇)
  • 使用ui路由器和顯示/隱藏子視圖正確的根據您的條件
  • 使用兒童控制器並根據您的條件使用正確的控制器顯示/隱藏元素

以下是組件結構的示例。

查看

<telecom-component ng-if="data.model === 'Telecom'"></telecom-component> 
<netflix-component ng-if="data.model === 'Netflix'"></netflix-component> 
<!-- add other components as necessary -->