2016-06-23 2 views
0

Мне нужно отобразить теги $scope.htmlView в виде html.angular bind html tags from controller to html view

Я уже пробовал использовать ng-bind-html. Он отображает теги html, но значения переменных области не отображаются.

Как я могу визуализировать как теги html, так и значения переменной области видимости?

Это контроллер:

$scope.newObj = { 
    billStatus : true; 
    eventTime : "2015-01-10" 
}; 

$scope.htmlView = '<p>{{newObj.eventTime}}</p> <div style="margin-top: -15px;"><md-checkbox ng-checked="{{newObj.billStatus}}" style="margin-left: 0px;" aria-label="Bilable"><span style="margin-left:0px;">Bilable</span> </md-checkbox></div>' 

Ожидаемый результат:

<p> 2015-01-10</p> 
<div style="margin-top: -15px;"> 
    <md-checkbox ng-checked="true" style="margin-left: 0px;" aria- label="Bilable"> 
    <span style="margin-left:0px;">Bilable</span> 
    </md-checkbox> 
</div> 

Я ищу через Интернет в течение нескольких дней и до сих пор could't найти способ, чтобы выяснить это. пожалуйста помогите. Спасибо.

+0

Вы пытались сделать это '$ sce.trustAsHtml (string)' trustAsHtml? – Rakeschand

+1

Проверьте этот вопрос http://stackoverflow.com/questions/17417607/angular-ng-bind-html-and-directive-within-it –

+0

Ссылка здесь (http://stackoverflow.com/questions/18157305/angularjs-compiling -dynamic-html-strings-from-database) –

ответ

1

Вы должны сделать 2 вещи.

  1. Использование данных нг-связывать-HTML = ""
  2. Использование $ sce.trustAsHtml (строка)

ОБНОВЛЕНО: Если вы не будете использовать угловые выражения, вы должны скомпилировать их с использованием

$compile.

Вы можете прочитать по этому $SCE

0

Я расскажу вам долгий путь, но это поможет you.Make пользовательских директив, как это.

app.directive('dynamic', function ($compile) { 
return { 
restrict: 'A', 
replace: true, 
link: function (scope, ele, attrs) { 
    scope.$watch(attrs.dynamic, function(html) { 
    ele.html(html); 
    $compile(ele.contents())(scope); 
    }); 
    } 
    }; 
    }); 

Использование в качестве

<span dynamic="{{htmlView}}" > 
+0

, поэтому в основном для преобразования строки в html-шаблон мне нужно использовать компиляцию $. правильно ?? –

0

Привет, пожалуйста, проверьте эту скрипку https://plnkr.co/edit/iqNltdDYv2n9Agke0C2C?p=preview

HTML

<div ng-controller="ExampleController"> 
     <p >{{newObj.eventTime}}</p> 
     <p dynamic="htmlView"></p> 
</div 

и JS

(function(angular) { 
    'use strict'; 
angular.module('bindHtmlExample', ['ngSanitize']) 
    .controller('ExampleController', ['$scope', function($scope) { 

     $scope.newObj = { 
     billStatus : true, 
     eventTime : "2015-01-10" 
} 

$scope.htmlView = '<p> {{newObj.eventTime}}</p> <div style="margin-top: -15px;">Hello <md-checkbox ng-checked="{{newObj.billStatus}}" style="margin-left: 0px;" aria-label="Bilable"><span style="margin-left:0px;">Bilable</span> </md-checkbox></div>' 
    }]) 

    .directive('dynamic', function($compile) { 
    return { 
     restrict: 'A', 
     replace: true, 
     link: function (scope, element, attrs) { 
      scope.$watch(attrs.dynamic, function(html) { 
       element[0].innerHTML = html; 
       $compile(element.contents())(scope); 
      }); 
     } 
    }; 
}); 
})(window.angular); 
+0

может у объяснить, пожалуйста, цель ngSanitize –

+0

, что нет необходимости, если вы удалите и это будет работать нормально –

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

  • Нет связанных вопросов^_^