Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/442.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 从AngularJS模板字符串生成HTML字符串_Javascript_Angularjs - Fatal编程技术网

Javascript 从AngularJS模板字符串生成HTML字符串

Javascript 从AngularJS模板字符串生成HTML字符串,javascript,angularjs,Javascript,Angularjs,我将angularjs模板作为字符串,包括“ng repeat”和其他指令。我想在控制器中编译它,以生成字符串形式的结果HTML 我想在Angular中应用的示例: Input: ------- var template = '<div ng-repeat="item in items">{{item.data}}</div>'; Output: -------- var result = '<div>1</div><div>2<

我将angularjs模板作为字符串,包括“ng repeat”和其他指令。我想在控制器中编译它,以生成字符串形式的结果HTML

我想在Angular中应用的示例:

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>';
输入:
-------
变量模板=“{item.data}}”;
输出:
--------
var结果='1234';
我希望在控制器中执行此操作,我尝试了以下操作:

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!
var-template='{{item.data}}';
var linkFunction=$compile(模板);
var结果=linkFunction($scope);
console.log(结果);//打印模板本身!
谢谢

试一试:

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());
var-template=angular.element(“{{item.data}”);
var linkFunction=$compile(模板);
var结果=linkFunction($scope);
$scope.$apply();
log(template.html());

为此,我在几个项目前给自己下了指示:

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);
            });
        }
    }
}]);
然后举例来说:

<div ng-html-compile='<div ng-repeat="item in items">{{item.data}}</div>'></div>

甚至字符串也可以是动态的:

<div ng-repeat="item in items" ng-html-compile="item.template">
</div>

它抛出“错误:$apply已在进行中”。我正在使用Angular 1.0.8尝试将“$scope.$digest();”更改为“$scope.$apply();”-请参阅我的编辑。在我的应用程序中,它抛出:$rootScope:inprog“操作已在进行”:$digest已在进行(使用ng 1.5.5)