Angular控制器重复相同的if语句

时间:2014-07-01 17:59:29

标签: angularjs

我的应用中的所有控制器都共享对我创建的数据提供者类型服务的依赖。该服务由检索各种数据位的函数组成,几乎所有这些方法都允许使用可选参数。输入此可选参数的能力是基于角色的。问题是我的控制器现在充满了类似的代码:

// Initializing controller.
dataservice.getRole().then(function(role) { $scope.isAdmin = role.isAdmin; });

// After a button press or some other event.
if($scope.isAdmin) {
    dataservice.getData($scope.param1, $scope.param2, $scope.optionalText);
} else {
    dataservice.getData($scope.param1, $scope.param2);
}

对我来说似乎有一种代码味道,我必须在整个控制器中不断重复这段代码,但我无法想出一种方法来构建我不需要的控制器。

1 个答案:

答案 0 :(得分:0)

我是如何意识到的:Controller Inheritance

基本上:

  1. 使用基本控制器逻辑和创建服务(工厂) 返回构造函数(example
  2. 在派生类中使用$injector.invoke(以实现您的 基本控制器)以丰富实际控制器$范围 (example
  3. 没有正式的#34;棱角分明的方式"实现这个功能,但我希望有角度的团队能够解决这个问题