2013-10-16 49 views
7

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

我检查,我有角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有:

这是去了解什么,我需要以正确的方式?

回答

12

$ sce是默认包含的,从角度1.2开始 - 所以你不需要消毒以获得$ sce。因此,在1.2中,您可以像其他服务一样传递$ sce。但要确保你的角度是版本1.2(如果你检查了杀毒版本vs核心)。

+0

其实我想显示我的管理员创建的数据,我相信并且我不想消毒。所以我相信我需要它,所以我可以这样做:$ sce.trustAsHtml(data.text)你提到它是“默认包含的”。那么你是否说我不需要添加'ngSanitize'等 –

+0

右键 - 如果你可以打开,你不需要它来访问$ sce 1.2 – KayakDave

+0

我使用的是1.2,但是我怎么做$ sce。 trustAsHtml如果我不访问它? –

10

问题是您正尝试在模块配置块中使用$ sce,这是一项服务。只有提供者可以在这个块中访问。

更改此

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

对此

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

因为它似乎是额外的 '$ SCE' 的依赖是错误的反正。你没有使用它,它没有被定义为一个参数。

相关问题