我想知道这是否是一个错误或记录在某处。似乎将 $element 注入 ng-view 指令附加的控制器失败。这是一个例子:
脚本.js:
.controller('MainCtrl', ['$route', '$routeParams', '$location', '$element',
function($route, $routeParams, $location, $element) {
// Works here
console.log('MainCtrl', $element);
this.$route = $route;
this.$location = $location;
this.$routeParams = $routeParams;
}])
.controller('BookCtrl', ['$routeParams', '$element', function($routeParams, $element) {
// Broken here
console.log('BookCtrl', $element);
this.name = "BookCtrl";
this.params = $routeParams;
}])
http://plnkr.co/edit/S7ziY6i3eMGn4RtetG0l?p=preview
MainCtrl
被注入$compile
提供的服务$element
作为当地人。BookCtrl
被注入ngRoute
这不提供$element
作为当地人。欲了解更多信息$compile
注入当地人,请参阅AngularJS $compile API 参考 -- 控制器.
The locals that ngRoute
注入是$scope
, $template
,以及其他属性$resolve
map.
来自ngRoute
Docs:
locals
当地人使用的地图$控制器服务于
控制器实例化。这locals
包含
的解析值resolve
地图。另外还有locals
还包含:
-
$scope
- 当前路由范围。
-
$template
- 当前路由模板 HTML。
The locals
将被分配到路由范围的$resolve
财产。您可以覆盖
属性名称,使用resolveAs
在路由定义中。看$routeProvider了解更多信息。
-- AngularJS ngRoute $route API 参考
来自$compile
Docs:
控制器
控制器构造函数。控制器在预链接阶段之前实例化,并且可以通过其他指令访问(请参阅 require 属性)。这允许指令相互通信并增强彼此的行为。控制器是可注入的(并支持括号表示法)跟随当地人:
-
$scope
- 与元素关联的当前范围
-
$element
- 当前元素
-
$attrs
- 元素的当前属性对象
-
$transclude
- 嵌入链接函数预先绑定到正确的嵌入范围:
-- AngularJS 综合指令 API - 控制器
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)