8

我正在尝试使用 $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);

在控制器中:

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));

我检查并加载了 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

任何人都可以通过建议我做错了什么来帮助我。我已尽可能多地遵循该示例,但无法找出问题所在。

一些背景:

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

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

然后在我的 HTML 中有:

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

4

2 回答 2

13

默认情况下包含 $sce,从 angular 1.2- 开始,因此您不再需要清理以获取 $sce。因此,在 1.2 中,您可以将 $sce 作为任何其他服务传入。但请确保您的角度是 1.2 版(以防您检查了清理版本与核心)。

于 2013-10-16T16:40:41.967 回答
11

问题是您试图在模块配置块内使用 $sce,它是一项服务。在此块中只能访问提供程序。

改变这个

.config(['$locationProvider', '$sce', '$sceProvider', '$stateProvider',
  function ($locationProvider, $sceProvider, $stateProvider) {

对此

.config(['$locationProvider', '$sceProvider', '$stateProvider',
  function ($locationProvider, $sceProvider, $stateProvider) {

因为看起来额外的 '$sce' 依赖无论如何都是错误的。您没有使用它,也没有将其定义为参数。

于 2013-10-16T17:10:46.133 回答