ng-bind-html 的使用


AngualrJS 提供了指令ng-bind-html 用於綁定包含HTML標簽的文檔,使用方式:

<ANY
  ng-bind-html="">
...
</ANY>

測試案例:

index.html

<div ng-controller="TestCtrl">
            <div>
                <p ng-bind-html="myHTML"></p>
            </div>
</div>

index.js

var myApp = angular.module('myApp', []);

myApp.controller('TestCtrl', ['$scope', function($scope){
        $scope.myHTML = '<strong>Hot</strong>';
}]);

瀏覽器輸出下面錯誤:

angular.js:11598 Error: [$sce:unsafe] Attempting to use an unsafe value in a safe context.
http://errors.angularjs.org/1.3.11/$sce/unsafe
    at file:///home/y/my_temp/angular_test/web/app/js/angular.js:63:12
    at htmlSanitizer (file:///home/y/my_temp/angular_test/web/app/js/angular.js:15053:13)
    at getTrusted (file:///home/y/my_temp/angular_test/web/app/js/angular.js:15217:16)
    at Object.sce.(anonymous function) [as getTrustedHtml] (file:///home/y/my_temp/angular_test/web/app/js/angular.js:15897:16)
    at Object.ngBindHtmlWatchAction [as fn] (file:///home/y/my_temp/angular_test/web/app/js/angular.js:20449:29)
    at Scope.$digest (file:///home/y/my_temp/angular_test/web/app/js/angular.js:14230:29)
    at Scope.$apply (file:///home/y/my_temp/angular_test/web/app/js/angular.js:14493:24)
    at bootstrapApply (file:///home/y/my_temp/angular_test/web/app/js/angular.js:1449:15)
    at Object.invoke (file:///home/y/my_temp/angular_test/web/app/js/angular.js:4182:17)
    at doBootstrap (file:///home/y/my_temp/angular_test/web/app/js/angular.js:1447:14)angular.js:11598 (anonymous function)angular.js:8548 (anonymous function)

查閱官方文檔要使用:$sanitize服務

Note: If a $sanitize service is unavailable and the bound value isn't explicitly trusted, you will have an exception (instead of an exploit.)

在angular.module中配置sanitize服務:

var myApp = angular.module('myApp', ['ngSanitize']);

再次刷新瀏覽器,輸出以下錯誤信息:

 Uncaught Error: [$injector:modulerr] Failed to instantiate module myApp due to:
Error: [$injector:modulerr] Failed to instantiate module ngSanitize due to:
Error: [$injector:nomod] Module 'ngSanitize' is not available! You either misspelled the module name or forgot to load it. If registering a module ensure that you specify the dependencies as the second argument.
http://errors.angularjs.org/1.3.11/$injector/nomod?p0=ngSanitize
    at file:///home/y/my_temp/angular_test/web/app/js/angular.js:63:12
    at file:///home/y/my_temp/angular_test/web/app/js/angular.js:1764:17
    at ensure (file:///home/y/my_temp/angular_test/web/app/js/angular.js:1688:38)
    at module (file:///home/y/my_temp/angular_test/web/app/js/angular.js:1762:14)
    at file:///home/y/my_temp/angular_test/web/app/js/angular.js:4094:22
    at forEach (file:///home/y/my_temp/angular_test/web/app/js/angular.js:323:20)
    at loadModules (file:///home/y/my_temp/angular_test/web/app/js/angular.js:4078:5)
    at file:///home/y/my_temp/angular_test/web/app/js/angular.js:4095:40
    at forEach (file:///home/y/my_temp/angular_test/web/app/js/angu

發現angular.js沒有sanitize模塊,在這里將

angular-sanitize.js加載進來就可以了。
<script src="../js/angular-sanitize.js"></script>

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM