AngularJS:1.2.3 版中$sce的'Unknown provider'错误



我正在使用AngularJS 1.2.3,默认情况下应该启用SCE服务。但是,我收到以下错误:

http://errors.angularjs.org/1.2.3/$injector/modulerr?p0=SaveApp&p1=Error: [$injector:unpr]   
http://errors.angularjs.org/1.2.3/$injector/unpr?p0=%24sce 
at Error (native)

这是我的代码:

var AwesomeApp = angular.module('AwesomeApp', ['ngCookies', 'ngSanitize', 'ngRoute', 'ui.bootstrap', 'ui.router'], function($httpProvider, $dialogProvider) {

再往下一点:

AwesomeApp.config(['$routeProvider', '$compileProvider', '$sce', function($routeProvider, $compileProvider, $sce) {
$routeProvider.
    when('/', {templateUrl: $sce.getTrustedResourceUrl(chrome.extension.getURL('app.html')),   controller: 'searchResultsController'}).
    otherwise({redirectTo: '/'});

知道为什么会出现未知提供程序错误吗?

$sce 是一个服务(不是提供者)

不能将服务注入到仅配置块提供程序中。

您可以做的是注入$sceDelegateProvider并创建白名单:

.config(function($sceDelegateProvider){
  $sceDelegateProvider.resourceUrlWhitelist(['self','http://*.url.com/**']);
})

来自$sceDelegateProvider文档:

$sceDelegateProvider提供程序允许开发人员配置 $sceDelegate 服务。这允许人们获取/设置白名单和黑名单,以确保用于采购 Angular 模板的 URL 是安全的。

最新更新