AngularJS 注入器 - 错误: [$injector:unpr] 未知提供程序: $rootScopeProvider <- $rootScope



这可能是一个微不足道的问题,但对于AngularJS新手来说,这是一个问题^_^

我最初试图实现的是(通过jQuery)使用ng-click指令动态插入标签。我搜索了一下,发现我必须获得AngularJS Injector,然后编译代码。所以这是最简单的注入器代码形式,对我来说不起作用,它有什么问题?

注#1:ngDirective的动态插入标记是在AngularJS范围之外完成的。

angular.module('simpleExample', [])
.run(
[ '$rootScope',
function ($rootScope) {
$rootScope.test = "Test";
}]);
console.log(angular.injector(['simpleExample']));
// console.log(angular.injector(['simpleExample']).$compile('<a href="" ng-click="someFunctionOnRootScope()">Text</a>'));

http://jsfiddle.net/Zx8hr/6/

ng模块

  • angular.bootstrap在使用时自动将ng模块添加到依赖项中(手动或与ngApp一起使用)
  • $rootScope/$compile服务是ng模块的一部分
  • 如果您想要这些服务,您需要使用injector.invoke
  • 您可能应该以更传统的方式使用angular

试试这个:

angular.module('simpleExample', ['ng']);
angular.injector(['simpleExample'])
.invoke(['$rootScope','$compile', 
function($rootScope, $compile){
var elm = $compile('<a href="" ng-click="someFunctionOnRootScope()">Text</a>')($rootScope);
$rootScope.someFunctionOnRootScope = function(){
alert("Hello there!");
}
angular.element(document.body).append(elm);
}]);

相关内容

  • 没有找到相关文章

最新更新