2016-12-02 3 views
1

нг-привязка работает нормально, почему нг-связывать-HTML не работает

angular.module('form', []).controller('formcontroller', ['$scope', 
 
     function($scope) { 
 
     $scope.input; 
 
     $scope.hello = "<h1> Welcome</h1>"; 
 
     } 
 
    ]);
<html> 
 

 
<head> 
 
    <script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.4.8/angular.min.js"></script> 
 

 
</head> 
 

 
<body> 
 
    <form ng-app="form" ng-controller="formcontroller"> 
 
    <span ng-bind="hello"></span> 
 
    
 
    <span ng-bind-html="hello"></span> 
 
    </form> 
 
    
 
</body> 
 

 
</html>

Я попытался с помощью

Это приводит к выходу, как

<h1> Welcome</h1> 

Я пытался заменить ng-bind-html не woking и выдает ошибку.

<script> 
     angular.module('form', []).controller('formcontroller', ['$scope', function($scope) { 

       $scope.hello="<h1> Welcome</h1>"; 
    }]); 
    </script> 

Error: $sce:unsafe Require a safe/trusted value Attempting to use an unsafe value in a safe context.

Просьба пояснить.

+0

Почему вы удалили ответ? – Sajeetharan

ответ

3

Если вы включите angular-sanitize сценарий, входы продезинфицировать путем разбора HTML в лексемы

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

 
miAp.controller('demoController', function($scope) { 
 
    $scope.bar = "<h1> Welcome</h1>"; 
 
    });
<html> 
 

 
<head> 
 
    <meta charset="utf-8"> 
 
    <title>ngBind</title> 
 
    
 
    <script src="//cdnjs.cloudflare.com/ajax/libs/angular.js/1.4.9/angular.min.js"></script> 
 
    <script src="//cdnjs.cloudflare.com/ajax/libs/angular.js/1.4.1/angular-sanitize.min.js" type="text/javascript"></script> 
 
    
 
    <script src="cookies.js"></script> 
 
</head> 
 

 
<body ng-app="miAp" ng-controller="demoController"> 
 
    <div ng-bind-html="bar"></div> 
 
</body> 
 

 
</html>

+0

Да, я добавил ngSanitize, он работает нормально. –

+0

@hariprasad отметить как ответ, если он помог – Sajeetharan

-2

Try This

<script src="//cdnjs.cloudflare.com/ajax/libs/angular.js/1.4.9/angular.min.js"></script> 
    <script src="//cdnjs.cloudflare.com/ajax/libs/angular.js/1.4.1/angular-sanitize.min.js" type="text/javascript"></script> 

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

App.controller('demoController', function($scope) { 
    $scope.bar = "<h1> Welcome</h1>"; 
    }); 

<h1 data-ng-bind="hello"></h1> 
1

Вы можете установить и включить ngSanitize.

Это должно исправить ошибку.

+0

ты прав. Проблема заключается в ngSanitize. –

0

При использовании нг-BIND-HTML, чтобы связать HTML строку, что HTML нужно быть безопасным для предотвращения предотвращения XSS и других проблем безопасности. Это проверяется режимом Angular's Strict Contextual Escaping (SCE), который включен по умолчанию.

Подробнее см. В этой ссылке: https://docs.angularjs.org/error/ $ sce/unsafe.

Чтобы решить эту проблему, вы можете просмотреть этот вопрос: With ng-bind-html-unsafe removed, how do I inject HTML?

Надежда эта помощь! Thanks

Смежные вопросы