在 AngularJS 中获取基本控制器内的 ControllerAs 别名
Get ControllerAs alias inside base controller in AngularJS
我们有用 AngularJS 编写的遗留代码,不使用 controllerAs
。
我们的 BaseController
(Plunker:script.js 第 19 行)有这段代码可以使所有 class 方法在 $scope
中可用,而无需编写 this.$scope.method = ...
this.$scope[key] = this[key].bind(this)
现在,由于我们开始迁移到 Controller as vm
语法,因此我们不再需要此代码。在 Plunker NewCtrl
中甚至不需要 $scope
注入,但是由于这一行我们需要注入。
问题:如何判断当前控制器(NewCtrl
)是否使用controllerAs
语法?
如果您的应用使用 ui-router
,您可以使用 $state
服务来检查控制器是否使用 as
语法声明。
$state.get()
returns 所有注册状态的列表。在每个项目中,您可以检查 controllerAs
是否存在或在 controller
中检查 'as' :
controller: 'testCtrl as vm' or
controllerAs: 'vm'
在控制器内部,您可以像上面那样使用 $state.current
。
我们有用 AngularJS 编写的遗留代码,不使用 controllerAs
。
我们的 BaseController
(Plunker:script.js 第 19 行)有这段代码可以使所有 class 方法在 $scope
中可用,而无需编写 this.$scope.method = ...
this.$scope[key] = this[key].bind(this)
现在,由于我们开始迁移到 Controller as vm
语法,因此我们不再需要此代码。在 Plunker NewCtrl
中甚至不需要 $scope
注入,但是由于这一行我们需要注入。
问题:如何判断当前控制器(NewCtrl
)是否使用controllerAs
语法?
如果您的应用使用 ui-router
,您可以使用 $state
服务来检查控制器是否使用 as
语法声明。
$state.get()
returns 所有注册状态的列表。在每个项目中,您可以检查 controllerAs
是否存在或在 controller
中检查 'as' :
controller: 'testCtrl as vm' or
controllerAs: 'vm'
在控制器内部,您可以像上面那样使用 $state.current
。