2016-07-25 2 views
1

Я хочу загрузить содержимое моего шаблона в переменную. На данный момент мой код выглядит так.ng-template to Variable from src

HTML

<script type="text/ng-template" id="a.html" src="templates/a.html"></script> 

JS

vm.template = $templateCache.get('a.html'); 
console.log("Template: " + vm.template); 

Это должно загрузить содержимое 'Шаблоны/a.html' в vm.template. К сожалению, это не сработает. Переменная vm.template не содержит шаблон.

The variable does not contain the template

То, что я узнал во время тестирования является то, что если я пишу содержимое шаблона непосредственно в тег сценария, как этот

<script type="text/ng-template" id="a.html">Hello!</script> 

Это на самом деле работает.

The variable contains the template

+0

Является ли это вопрос? – Rohit

+0

@Rohit Да. В нем сказано так в заголовке, что я хочу загрузить содержимое в переменную из источника, а не из тегов сценария. –

+0

Вы должны проверить это [http://plnkr.co/edit/E00OhHeccMZ3jcqmy9qh?p=preview] (http://plnkr.co/edit/E00OhHeccMZ3jcqmy9qh?p=preview) – Rohit

ответ

1

Использование SRC на нг-шаблона не может работать:

Вы можете использовать нг-включают в себя:

<script type="text/ng-template" id="a.html"> 
    <div ng-include="'templates/a.html'"></div> 
</script> 

или сделать это в вашей конфигурации маршрутизации:

.config(function ($routeProvider) { 
    $routeProvider 
     .when("/", { 
      templateUrl: 'templates/a.html', 
      controller: 'aController' 
     }).when("/second", { 
      templateUrl: 'templates/b.html', 
      controller: 'bController' 
     }).otherwise({redirectTo: "/"}); 
}); 

Кроме того, это делает запрос /templates/a.html GET на ваш сервер (Убедитесь, что вы настроили вашу статику)

0

вы можете использовать директиву:

.directive('script', function() { 
    return { 
     restrict:'E', 
     scope: false, 
     controller: function($attrs, $templateCache, $http, $log) { 
     if($attrs['type'] != "text/ng-template" || !$attrs['src']){ 
      return; 
     } 

     var id = $attrs['id'] || $attrs['src']; 
     var src = $attrs['src']; 
     $log.debug('Loading %s template from %s', id, src); 

     $http.get(src).then(function(response){ 
      $log.debug('Loaded template %s', id); 
      $templateCache.put(id, response.data); 
     }); 
     } 
    }; 
    })