我正在尝试使用$ 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中有:
这是解决我需要的正确方法吗?
答案 0 :(得分:13)
$ sce默认包含从角度1.2开始 - 因此您不再需要消毒以获得$ sce。因此,使用1.2,您可以将$ sce传递给任何其他服务。但请确保您的角度为版本1.2(如果您检查了清理版本与核心版本)。
答案 1 :(得分:11)
问题是你正试图在模块配置块中使用$ sce,这是一项服务。此块中只能访问提供者。
更改此
.config(['$locationProvider', '$sce', '$sceProvider', '$stateProvider',
function ($locationProvider, $sceProvider, $stateProvider) {
到此
.config(['$locationProvider', '$sceProvider', '$stateProvider',
function ($locationProvider, $sceProvider, $stateProvider) {
因为看起来额外的'$ sce'依赖是错误的。您没有使用它,也没有将其定义为参数。