嵌套ng-include的角度问题

IxD*_*Day 6 javascript angularjs

我使用嵌套时遇到Angularjs问题ng-include$compile功能.这是错误:

Error: [$injector:unpr] Unknown provider: $rootElementProvider <- $rootElement <- $location <- $anchorScroll <- ngIncludeDirective
Run Code Online (Sandbox Code Playgroud)

我想,我必须$rootElementProvider在编译流程中注入某个地方,但我不知道如何.

这是我的问题的一个问题:http ://plnkr.co/edit/K8iayGXGLx5QwHNNiLZ1?p=preview

所有代码都是必需的,我不能使用指令和控制器,模板也需要像这样缓存.此外,如果有人也知道如何摆脱已经运行的$timeout服务,$digest我将非常感激.

mie*_*sol 0

由于您是手动创建的,因此$injector您需要以某种方式告诉它从哪里获取$rootElement。一种方法是通过内联模块定义:

angular.injector(['ng', function($provide){
  var $rootElement = angular.element(document.querySelector('body'));
  $provide.value('$rootElement', $rootElement);
}]).invoke(function ($injector){ 
    var localRootElement = $injector.get('$rootElement');
});
Run Code Online (Sandbox Code Playgroud)

我已经相应地更新了你的笨蛋

至于避免使用的方法$timeout可以在详细答案中找到:

防止调用 $scope.$apply() 时出现错误 $digest already in Progress

简而言之,您可以进行简单的检查(这并不意味着您应该这样做):

if(!$scope.$$phase) {
  //$digest or $apply
}
Run Code Online (Sandbox Code Playgroud)

请参阅链接的答案了解更多详细信息。