gpt4 book ai didi

javascript - AngularJS 注入(inject)器 - 错误 : [$injector:unpr] Unknown provider: $rootScopeProvider <- $rootScope

转载 作者:行者123 更新时间:2023-11-29 19:43:09 25 4
gpt4 key购买 nike

这可能是个小问题,但对于 AngularJS 新手来说这是个问题 ^_^

我最初想要实现的是使用 ng-click 指令创建一个动态插入的标签(通过 jQuery)。我已经搜索并发现我必须获得 AngularJS Injector,然后编译该代码。所以这是最简单的注入(inject)器代码形式,它对我不起作用,它有什么问题?

注意#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);

}]);

关于javascript - AngularJS 注入(inject)器 - 错误 : [$injector:unpr] Unknown provider: $rootScopeProvider <- $rootScope,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21694615/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com