在控制器内编译

时间:2015-03-12 14:21:25

标签: angularjs controller

问题如下,

            $scope.name = "Maximilian";
            var template = "<div><span>{{name}}</span></div>";
            var content = $compile(template)($scope);
            console.info(content);  //shows compiled innerText
            $scope.outputContainer = content[0].innerText; // shows uncompiled Content

我做错了什么?

2 个答案:

答案 0 :(得分:0)

一种可能的解决方案是将其置于0秒$ timeout-function中。 如果有更好的,请告诉我。

$timeout(function(){
    $scope.outputContainer = content[0].innerHTML;
});

http://jsfiddle.net/cLenjedL/1/

答案 1 :(得分:0)

我认为您正在寻找评估内容。

你的控制器看起来像这样。

function TodoCtrl($scope) {
    $scope.name = "Maximilian";
    var template = "<div><span>"+$scope.$eval("name")+"</span></div>";
    $scope.outputContainer = template;
}

就个人而言,我会创建一个指令,并使用transclude函数作为html片段。

我已更新您的js fiddle