编译字符串htmlusing angular compile无法使用ng-repeat

时间:2017-02-23 16:51:48

标签: angularjs angularjs-directive angularjs-templates

抱歉之前的问题格式不好。现在更改

我有一个html字符串,它使用ngrepeat呈现所需的div ..

 var templateHTML = "<div ng-repeat='entity in createCtrl.finalCCList'>\
                         <span>{{entity.name}}</span>\
                     </div>";

此处“createCtrl.finalCCList”包含实体对象列表,其中包含name和id属性。 现在,当我尝试使用 -

编译它时
var compiledTemplateHTML = $compile(templateHTML)($scope);
            if (compiledTemplateHTML && compiledTemplateHTML[0]) {
                return compiledTemplateHTML[0].outerHTML;
            }
            else {
                return "";
            }

我一无所获。虽然我检查过并且$ scope.createCtrl.finalCCList确实具有所需的值。

我在这里遗漏了什么。

1 个答案:

答案 0 :(得分:0)

确定。经过大量的研究,我认为问题是在编译需要时间之后,在字符串html中由ng-repeat呈现的DOM,我在完成之前分配它。如果我在超时中使用赋值,它可以正常工作。

所以不是这个 -

var compiledTemplateHTML = $compile(templateHTML)($scope);
        if (compiledTemplateHTML && compiledTemplateHTML[0]) {
            return compiledTemplateHTML[0].outerHTML;
        }
        else {
            return "";
        }

我没有返回,而是在$ timeout

中分配范围
var compiledTemplateHTML = $compile(templateHTML)($scope);
        if (compiledTemplateHTML && compiledTemplateHTML[0]) {
            $timeout(function () {
                createCtrl.isHeaderContent = compiledTemplateHTML[0].outerHTML;
            }, 0);
        }

感谢。

相关问题