Смотрите ng-модель в ng-bind-html, используя AngularJs

Вот моя разметка

<div ng-app="myApp" ng-controller="myCtrl">
    <input type="text" ng-model="name">
    <p ng-bind-html="myText|unsafe"></p>
</div>

Я использую этот код

var app = angular.module("myApp", ['ngSanitize']);
app.controller("myCtrl", function($scope) {
    $scope.myText = "My name is: <h1>{{name}}</h1>";
    $scope.name="Habib";
});
app.filter('unsafe', function ($sce) {
    return function(val) {
        return $sce.trustAsHtml(val);
    };
});

Выход:

Меня зовут: {{}}

Желаемый результат:

Меня зовут: Хабиб

Я хочу, чтобы это также отражало значение из текстового поля.

1 ответ

Решение

РЕДАКТИРОВАТЬ

Причина, по которой у вас возникли проблемы с получением $scope.name связано, потому что ng-bind-html не привязывает этот HTML к текущей области. Вы можете использовать директиву, чтобы исправить это. Вот ответ, который решает вашу проблему.

Вот плункер, который добавляет директиву и показывает поведение, которое вы ищете.

Вот директива, которая была добавлена ​​для решения вашей проблемы:

app.directive('compileTemplate', function($compile, $parse){
   return {
       link: function(scope, element, attr){
           var parsed = $parse(attr.ngBindHtml);
           function getStringValue() {
                return (parsed(scope) || '').toString();
           }

            // Recompile if the template changes
            scope.$watch(getStringValue, function() {
                // The -9999 makes it skip directives
                // so that we do not recompile ourselves
                $compile(element, null, -9999)(scope);  
            });
        }
    }
});

Вы должны объявить $scope.name="Habib" перед myText переменная области видимости

var app = angular.module("myApp", ['ngSanitize']);
app.controller("myCtrl", function($scope) {
    $scope.name="Habib";
    $scope.myText = "My name is: <h1>{{name}}</h1>";
});
app.filter('unsafe', function ($sce) {
    return function(val) {
        return $sce.trustAsHtml(val);
   };
});
Другие вопросы по тегам