我正在构建一个带有“消息”的指令,该消息也可以包含html和嵌套的angular指令。现在在我的指令控制器中我做了:
var compiled = $compile(message)($scope);
this.message = $sce.trustAsHtml(compiled.html());
但如果消息没有有效的开始和结束标记,它将无法编译。我想知道是否有另一种方法,或者如果没有我使用正则表达式,角度有任何方法可以做到这一点。
答案 0 :(得分:1)
我绝对不会解析或验证HTML。 jQuery / jqLite已经为我们做了。
angular.element
需要根元素。因此,将您的消息包装在根元素中,编译并链接,然后取出内容:
link: function(scope, element){
scope.param = "test";
var message = "foo {{param}} bar";
var el = angular.element("<div>").append(message);
var compiled = $compile(el)(scope);
element.append(compiled.contents());
}