首页 > 解决方案 > 在AngularJS中的基本控制器内获取ControllerAs别名

问题描述

我们有用 AngularJS 编写的遗留代码,不使用controllerAs.

样品冲床

我们的BaseController(Plunker:script.js line 19)有这段代码可以让所有类方法都可用,$scope而无需编写this.$scope.method = ...

this.$scope[key] = this[key].bind(this)

现在,由于我们开始迁移到Controller as vm语法,我们不再需要此代码。在 PlunkerNewCtrl中甚至不需要$scope注入,但是因为这条线我们需要。

问题:如何确定当前控制器(NewCtrl)是否与controllerAs语法一起使用?

标签: angularjsangularjs-controlleras

解决方案


如果您的应用程序使用ui-router,您可以使用$stateservice 来检查控制器是否使用as语法声明。

$state.get()返回所有已注册状态的列表。在每个项目中,您可以检查是否controllerAs存在或在内部“作为” controller

controller: 'testCtrl as vm' or 
controllerAs: 'vm'

从控制器内部,您可以$state.current像上面那样使用。


推荐阅读