AngularJS中的未知提供商$ sce

Sam*_*tar 8 angularjs

我正在尝试使用$ sce.我设置了这样的代码:

var app = angular
    .module('app', ['ui.router', 'admin', 'home', 'questions', 'ngResource', 'ngSanitize', 'LocalStorageModule','ajoslin.promise-tracker'])
    .config(['$locationProvider', '$sce', '$sceProvider', '$stateProvider',
        function ($locationProvider, $sceProvider, $stateProvider) {

            $sceProvider.enabled(false);
            $locationProvider.html5Mode(true);
Run Code Online (Sandbox Code Playgroud)

在控制器中:

angular.module('questions')
    .controller('QuestionsContentController',
    ['$rootScope', '$sce', '$scope', '$http', '$resource', '$state',
    function ($rootScope, $sce, $scope, $http, $resource, $state) {

        var isNumber = !isNaN(parseFloat($state.params.content));
Run Code Online (Sandbox Code Playgroud)

我检查了,我加载了angular-sanitize.js v1.2.0-rc.3.

但是我收到一条消息:

Uncaught Error: [$injector:modulerr] Failed to instantiate module app due to:
Error: [$injector:unpr] Unknown provider: $sce
Run Code Online (Sandbox Code Playgroud)

任何人都可以通过暗示我做错了什么来帮助我.我尽可能地遵循了这个例子但却找不到什么是错的.

一些背景:

我认为我需要获得$ sce的原因是因为我拥有100%信任的数据并且我想在屏幕上显示.它的数据包含"<"">""&"和类似的东西.我设置$ sceProvider.enabled(false)但数据仍然显示不正确.接下来我想我可能需要这样做:

$ scope.content = data.text; $ scope.unsanitizedQuestionText($ sce.trustAsHtml(data.text))

然后在我的HTML中有:

这是解决我需要的正确方法吗?

Kay*_*ave 13

默认情况下包含$ sce,从角度1.2开始,因此您不再需要消毒以获得$ sce.因此,使用1.2,您可以将$ sce传递给任何其他服务.但请确保您的角度为1.2版本(如果您检查了清理版本与核心版本).


Ada*_*dam 11

问题是你正试图在模块配置块中使用$ sce,这是一种服务.此块中只能访问提供程序.

改变这个

.config(['$locationProvider', '$sce', '$sceProvider', '$stateProvider',
  function ($locationProvider, $sceProvider, $stateProvider) {
Run Code Online (Sandbox Code Playgroud)

对此

.config(['$locationProvider', '$sceProvider', '$stateProvider',
  function ($locationProvider, $sceProvider, $stateProvider) {
Run Code Online (Sandbox Code Playgroud)

因为看起来额外的'$ sce'依赖是错误的.你没有使用它,它没有被定义为参数.