angulargs 템플릿은 "ng-repeat"및 기타 지시문을 포함한 문자열로 사용합니다. 결과 HTML을 문자열로 생성하기 위해 컨트롤러에서 컴파일하고 싶습니다. 내가 각도에 적용하려는 작업에AngularJS 템플릿 문자열에서 HTML 문자열 생성
예 :
var template = '<div ng-repeat="item in items">{{item.data}}</div>';
var linkFunction = $compile(template);
var result = linkFunction($scope);
console.log(result); // prints the template itself!
감사 :이 내가했습니다 컨트롤러에서 수행되어야 할
Input:
-------
var template = '<div ng-repeat="item in items">{{item.data}}</div>';
Output:
--------
var result = '<div>1</div><div>2</div><div>3</div><div>4</div>';
나는 다음과 같은 시도!
<div ng-html-compile='<div ng-repeat="item in items">{{item.data}}</div>'></div>
또는 예를 들어
angular.module('myApp')
.directive('ngHtmlCompile', ["$compile", function ($compile) {
return {
restrict: 'A',
link: function (scope, element, attrs) {
scope.$watch(attrs.ngHtmlCompile, function (newValue, oldValue) {
element.html(newValue);
$compile(element.contents())(scope);
});
}
}
}]);
후 : 내가 프로젝트의 지시 커플 전에 자신을 만들어이를 위해
var template = angular.element('<div ng-repeat="item in items">{{item.data}}</div>');
var linkFunction = $compile(template);
var result = linkFunction($scope);
$scope.$apply();
console.log(template.html());
"오류 : $ apply already in progress"가 throw됩니다. Angular 1.0.8을 사용하고 있습니다. – phikry
"$ scope. $ digest();"를 변경해보십시오. "$ scope. $ apply();" - 편집을 참조하십시오. – Fordio
내 응용 프로그램에서 다음을 throw합니다. $ rootScope : inprog "이미 진행중인 작업": $ digest가 이미 진행 중입니다 (1.5.5를 사용) –