2015-03-12 3 views
1

Проблема происходит следующим образом,Compile внутри контроллера

  $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 

, что я делаю неправильно?

+0

Что говорит ошибка? Вы ввели '' compile' в свой контроллер? – TeoMor

+0

Я получаю нескомпилированный контент .. он упоминается в комментариях примера кода. –

+2

[здесь скрипка] (http://jsfiddle.net/cLenjedL/) –

ответ

0

Одно из возможных решений заключается в том, чтобы поместить его в 0-секундную $ timeout-функцию. Если есть лучший, дайте мне знать.

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

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

0

Я думаю, что вы ищете оцениваемое содержание.

Ваш контроллер может выглядеть следующим образом.

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

Лично я бы создал директиву и использовал функцию transclude для фрагмента html.

Я обновил ваш js fiddle

Смежные вопросы