将$ scope和$元素注入控制器可以在我的项目中的大多数地方工作,但在一个实际上并没有。似乎没有任何理由在这种情况下它不应该起作用。删除它,控制器的其余部分工作正常,但在这个特定的控制器,如果注入,我得到以下控制台错误:angular.js:10072 [unknownService-unhandledError]发生了未处理的错误:[$ injector:unpr]未知provider:$ elementProvider< - $ element
angular.module('app').controller(controllerId, ['$scope', '$element', 'MyApp', controller]);
function controller($scope, $element, myApp) {
用谷歌搜索,似乎有一些报告,但没有真正的答案,我可以解决它,只是想了解它。
答案 0 :(得分:2)
$compile
服务将$element
作为本地ngRoute
注入控制器。
$compile
文档:控制器
控制器构造函数。控制器在预链接阶段之前被实例化,并且可以被其他指令访问(请参阅require属性)。这允许指令彼此通信并增强彼此的行为。控制器可以使用以下本地人:
进行注射(并支持括号表示法)
$scope
- 与元素相关的当前范围$element
- 当前元素$attrs
- 元素的当前属性对象$transclude
- 预先绑定到正确的转换范围的转换链接函数:
- AngularJS Comprehensive Directive API - controller
ngRoute
文档:
locals
$controller服务使用的本地地图 控制器实例化。
locals
包含。{1}}resolve
地图的已解析值。此外,locals
还包含:
$scope
- 当前路线范围。$template
- 当前路线模板HTML。
locals
将被分配到路由范围的$resolve
属性。你可以覆盖 属性名称,在路由定义中使用resolveAs
。看到 $routeProvider了解更多信息。