2013-10-16 19 views
7

Tôi đang cố sử dụng $ sce. Tôi thiết lập mã của tôi như thế này:

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

Trong bộ điều khiển:

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

tôi đã kiểm tra và tôi có góc-sanitize.js v1.2.0-rc.3 nạp.

Tuy nhiên tôi nhận được một tin nhắn:

Uncaught Error: [$injector:modulerr] Failed to instantiate module app due to: 
Error: [$injector:unpr] Unknown provider: $sce 

bất cứ ai có thể giúp tôi bằng cách gợi ý những gì tôi đang làm sai. Tôi đã theo dõi ví dụ càng nhiều càng tốt nhưng không thể tìm ra điều gì sai.

Một số nền:

Lý do tôi nghĩ tôi cần phải nhận được $ SCE là bởi vì tôi có dữ liệu mà tôi tin tưởng 100% và tôi muốn hiển thị trên màn hình. Dữ liệu chứa "<" ">" "&" và những thứ như thế này. Tôi đặt $ sceProvider.enabled (sai) nhưng dữ liệu vẫn hiển thị không chính xác. Tiếp theo tôi đã nghĩ rằng có lẽ tôi cần phải làm:

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

và sau đó trong HTML của tôi có:

Đây có phải là cách đúng đắn để đi về những gì tôi cần?

Trả lời

12

$ sce được bao gồm theo mặc định bắt đầu bằng góc 1,2 - vì vậy bạn không cần vệ sinh nữa để nhận $ sce. Vì vậy, với 1,2, bạn có thể chuyển $ sce vào như bất kỳ dịch vụ nào khác. Nhưng hãy chắc chắn rằng góc của bạn là phiên bản 1.2 (trong trường hợp bạn đã kiểm tra phiên bản khử trùng so với lõi).

+0

Thực ra tôi muốn hiển thị dữ liệu mà quản trị viên của tôi đã tạo mà tôi tin tưởng và tôi không muốn vệ sinh. Vì vậy, tôi tin rằng tôi cần nó vì vậy tôi có thể làm: $ sce.trustAsHtml (data.text) Bạn đề cập đến nó là "bao gồm theo mặc định". Vì vậy, bạn có nói rằng tôi không cần phải thêm 'ngSanitize' vv –

+0

Phải- bạn không cần nó để truy cập vào $ sce nếu bạn đang ok trên 1.2 – KayakDave

+0

Tôi đang sử dụng 1,2 nhưng làm thế nào tôi có thể làm $ sce. trustAsHtml nếu tôi không truy cập? –

10

Vấn đề là bạn đang cố gắng sử dụng $ sce, là một dịch vụ, bên trong khối cấu hình mô-đun. Chỉ các nhà cung cấp mới có thể truy cập được trong khối này.

Thay đổi này

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

Để này

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

Kể từ khi nó có vẻ như rằng thêm '$ SCE' phụ thuộc là sai lầm nào. Bạn đã không sử dụng nó và nó không được định nghĩa là một tham số.

Các vấn đề liên quan