编译模板

时间:2016-02-24 08:25:51

标签: angularjs

我试图在AngularJS中的服务中编译模板,但是当我使用$ compile服务时,我一直收到这个错误:

text.indexOf is not a function

我尝试了一些不同的方法,但我似乎无法获得有效的解决方案。但是有一个工作小提琴:http://jsfiddle.net/DUM7t/所以我不知道为什么它会破裂。提前谢谢!

编辑: 如果我将剪切内容放在我的应用程序的运行块中,它也能正常工作。

服务:

(function () {
  'use strict';

  angular
    .module('app')
    .service('PrintUtilService', PrintUtilService);

  PrintUtilService.$inject = ['$rootScope', '$timeout', '$interpolate', '$templateRequest', '$uibModal', 'APP', 'FORMATS'];
  /* @ngInject */
  function PrintUtilService($rootScope, $timeout, $compile, $templateRequest, $uibModal, APP, FORMATS) {
    var service = {
      printTemplate: printTemplate
    };

    return service;

    function printTemplate(){
      var data = ["1","2"];
      var html  =
        '<div>' +
        '<ul>' +
        '<li ng-repeat="score in data">{{score}}</li>' +
        '</ul>'+
        '</div>';

      var el = angular.element(html);

      $rootScope.data = data;
      var result = $compile(el)($rootScope); // error on this line

      $timeout(function() {
        console.log(el.html());
        alert(el.html());
      });
    }
  }
})();

1 个答案:

答案 0 :(得分:0)

var scope = $rootScope.$new();
scope.data = data;
var result = $compile(el)(scope);