angularjs - 在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
语法一起使用?
解决方案
如果您的应用程序使用ui-router
,您可以使用$state
service 来检查控制器是否使用as
语法声明。
$state.get()
返回所有已注册状态的列表。在每个项目中,您可以检查是否controllerAs
存在或在内部“作为” controller
:
controller: 'testCtrl as vm' or
controllerAs: 'vm'
从控制器内部,您可以$state.current
像上面那样使用。
推荐阅读
- reactjs - Reactjs - npm start 未在浏览器中打开
- azure - 健康检查指标刀片仅显示“计数”值
- vue.js - Vuetify v-select 每个选项的高度非常大 40px。我需要少两倍
- javascript - Phaser 3 - 销毁瓦片地图
- java - 如何以空白行结束输入来停止 while 循环?
- html - 如何使用角度中的指令将日期输入格式化为自定义日期格式
- r - R 和 rhdf5:每个函数都抛出一个错误:来自 C 堆栈溢出的段错误
- c# - 父停靠时DataGridView隐藏列标题
- r - Winbugs:变化点的动态数量
- python - 我如何在 for 循环中使用 keras.Layer 的动态维度(无维度)?