角度注入$元素到控制器工作在大多数地方但不是一个

时间:2016-06-30 14:18:05

标签: angularjs element

将$ 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) {
用谷歌搜索,似乎有一些报告,但没有真正的答案,我可以解决它,只是想了解它。

1 个答案:

答案 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了解更多信息。

- AngularJS ngRoute $route API Reference