检测在angular中传递给$ compile的字符串的最佳方法是可编译的吗?

时间:2015-02-12 15:09:56

标签: javascript angularjs

我正在构建一个带有“消息”的指令,该消息也可以包含h​​tml和嵌套的angular指令。现在在我的指令控制器中我做了:

var compiled = $compile(message)($scope);
this.message = $sce.trustAsHtml(compiled.html());

但如果消息没有有效的开始和结束标记,它将无法编译。我想知道是否有另一种方法,或者如果没有我使用正则表达式,角度有任何方法可以做到这一点。

1 个答案:

答案 0 :(得分:1)

我绝对不会解析或验证HTML。 jQuery / jqLit​​e已经为我们做了。

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