我有這樣的例子
<div ng-controller="MyCtrl">
<div compile-template ng-bind-html="post"></div>
</div>
而且angularjs代碼:
angular.module('myApp',[])
.controller('MyCtrl', function($scope, $sce,$timeout) {
$scope.name = 'World';
$scope.post = $sce.trustAsHtml("<h1>hello {{name}}</h1>");
$timeout(function(){
$scope.name = "3333";
},3000);
});
angular.module("myApp").directive('compileTemplate', ["$compile", "$parse", function($compile, $parse) {
return {
restrict: 'A',
link: function($scope, element, attr) {
var parse = $parse(attr.ngBindHtml);
function value() { return (parse($scope) || '').toString(); }
$scope.$watch(value, function() {
$compile(element, null,-9999)($scope);
});
}
}
}]);
如果你仔細觀察,你會發現這個功能。
$compile(element, null,-9999)($scope);
如果我使它$compile(element)($scope)
,它不再工作。
這是爲什麼?
這是小提琴。
http://jsfiddle.net/bugd67e3/4/