2015-03-21 2 views
2

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

Но, я хотел бы встроить дочерние привязки в этот 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> 

Мысли?

+3

довольно уверен, что вы должны сделать что-то с участием '$ compile' –

ответ

2

Простая директива, как это будет делать:

<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); 
    } 
    }; 
});