AngularJS: ngBindHtml, который также содержит дочерние привязки?

AngularJS v1.3.14: В настоящее время я успешно использую модуль «ngSanitize» в своем приложении angular с «ng-bind-html», чтобы привязать некоторый HTML к выводу области на странице. Это работает и не требует более старых вещей $sce 'trust HTML'.

Но я хотел бы встроить дочерние привязки в этот HTML.

Итак... что-то вроде этого работает...

angular.module('myApp', ['ngSanitize'...)
    .controller('SomeCtrl', ['$scope', function($scope) {
        $scope.myHTML = '<p>hello world</p>';
}]);
...
<div ng-app="myApp" ng-controller="SomeCtrl" ng-bind-html="myHTML"></div>

Что-то подобное не...

angular.module('myApp', ['ngSanitize'...)
    .controller('SomeCtrl', ['$scope', function($scope) {
        $scope.myContent = 'hello world';
        $scope.myHTML = '<p>{{myContent}}</p>';
}]);
...
<div ng-app="myApp" ng-controller="SomeCtrl" ng-bind-html="myHTML"></div>

Мысли?


person Eric Swanson    schedule 21.03.2015    source источник
comment
Почти уверен, что вам придется сделать что-то, связанное с $compile   -  person Explosion Pills    schedule 21.03.2015


Ответы (1)


Простая директива, подобная этой, сделает это:

<div bindy="myHTML"></div>
.directive('bindy', function($compile) {
  return {
    link: function($scope, $element, $attrs) {
      var html = $scope.$eval($attrs.bindy);
      $element.html(html);
      $compile($element.contents())($scope);
    }
  };
});
person m59    schedule 21.03.2015