在angularjs中的开关控制器

问题描述:

我的页面上有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

感谢这似乎只是一个改变不好的设计,并从你的描述没有迹象表明你需要做这样的事情。

你能做什么,而不是:

  • 创建组件和显示/隐藏根据您的情况(优先选择)
  • 使用ui路由器和显示/隐藏子视图正确的根据您的条件
  • 使用儿童控制器并根据您的条件使用正确的控制器显示/隐藏元素

以下是组件结构的示例。

查看

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