-1

抱歉之前的问题格式不好。现在改变这个

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

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

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

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

我什么都得不到。而我检查并 $scope.createCtrl.finalCCList 确实具有所需的值。

我在这里有什么遗漏吗。

4

1 回答 1

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

谢谢。

于 2017-02-24T16:34:19.767 回答