2013-12-23 9 views
0

В Angularjs есть способ, которым я могу хранить все свои шаблоны на карте. и обращаться к ним по мере необходимости.Шаблоны Angularjs от карты

<li class="commentList" ng-repeat="c in m.c" 
    ng-include="'template1.html'"> 
    </li> 

из ng-repeat="c in m.c" на основе c.type я хочу, чтобы загрузить другой тип шаблона. Поэтому я хотел бы сохранить карту Тип Ç для шаблона:

{'type1':'<script type="text/ng-template" id="template1.html"> <div class="col1">..T1.</div></script>', 
'type2':''<script type="text/ng-template" id="template2.html"> <div class="col3">..T2.</div></script>'} 
+0

вы можете хранить все шаблоны в карте. вы можете проанализировать любой формат строки в шаблоне. anotyer способ использовать $ templateCache.get ('ключ'). или у вас есть проблема с компиляцией шаблона? – Daiwei

ответ

0

Я не знаю, что ваш HTML-код должен делать, но, вероятно, это может помочь вам:

angular.module('myModule', []) 
    .run(function ($templateCache) { 
     $templateCache.put(
      'tmpl1.html', angular.element('#tmpl1.html').html()); 
     $templateCache.put(
      'tmpl2.html', angular.element('#tmpl2.html').html()); 
    }); 

В вашей Если вам нужно принять вышеуказанный код, чтобы использовать вашу карту. Если вы хотите зарегистрировать шаблон type1 (ключ), это легко. Но если вы хотите использовать template1.html, вам придется либо сменить ключ карты, либо извлечь идентификатор с регулярным выражением.

Существует также плагин grunt, который генерирует JS-файл со всеми вашими шаблонами: grunt-html2js.

0

Попробуйте как этот

магазина имя файла шаблонов в массиве

<li class="commentList" ng-repeat="c in m.c"> 
<load-templates item="c"></load-templates> 
</li> 

и JS

appname.directive('loadTemplates', function ($compile, $http) { 
    return { 
     restrict: 'E', 
     replace: true, 
     link: function ($scope, $element) { 
      $http.get('path to template/'+$scope.item+'.html').success(function (html) { 
       $element.html(html).show(); 
       $compile($element.contents())($scope); 
       // if you wish to do some other functions on the templates goes here 
      }); 
     }, 
     scope: { 
      item: '=' 
     } 
    } 
}); 
Смежные вопросы