Директива работает с templateUrl, но не с шаблоном

#angularjs #angularjs-directive #angularjs-ng-repeat

#angularjs #angularjs-директива #angularjs-ng-repeat

Вопрос:

Это странно. Я новичок в angular, учусь только неделю или около того.

У меня есть две директивы.

Первый:

 app.directive('block', function() {
   return {
       restrict: 'E',
       replace: true,
        scope:true,
       link: function(scope, element, attrs) {
           scope.blockCss = function() {
                return attrs.block;
           }
           scope.blockSize = function() {
                return attrs.blocksize;
           }
           scope.category = function() {
                return attrs.category;
           }
       },
       templateUrl: function(elem,attrs) {
           return attrs.block   '.html';
       }
   }
});
  

Это отлично работает с элементом, называемым:

 <block blocksize="3" category="foo1" blockcss="bar1"></block>
  

Теперь самое интересное.

Идентичная директива, но изменяющаяся с templateUrl на Template, чтобы иметь что-то более динамичное:

 app.directive('block', function() {
   return {
       restrict: 'E',
       replace: true,
        scope:true,
       link: function(scope, element, attrs) {
           scope.blockCss = function() {
                return attrs.block;
           }
           scope.blockSize = function() {
                return attrs.blocksize;
           }
           scope.category = function() {
                return attrs.category;
           }
       },
       template: function(elem,attrs) {

           return '<div class="blocksize{{blockSize()}} {{blockCss()}}" ng-repeat="item in items | orderByPriority | filter:{category:category()} | orderBy:myorder" ng-include src="'{{blockCss()}}.html'"></div>';
       }
   }
});
  

Возможно, я идиот, но если бы кто-нибудь мог указать мне, чего мне не хватает, я был бы признателен.

В дополнение к вышесказанному, я хотел бы иметь возможность ссылаться на атрибуты элемента (например, элемент ‘block’) внутри шаблона или URL-адреса шаблона — вот почему у меня есть определения области видимости (которые должны быть дочерними элементами области видимости).

Действительно с нетерпением жду любого ответа.

Комментарии:

1. я не думаю, что вы можете использовать template как функцию, и в вашем случае это в любом случае не имеет смысла, поэтому вам лучше использовать только template:»string»

2. Хорошо, большое спасибо. Это немного помогло. Однако я все еще не могу получить атрибут корневого элемента в шаблон ng-include. Как мне это сделать?

3. @DayanMorenoLeon на самом деле вы можете использовать функцию для шаблона, функции просто нужно вернуть строку. Но я все еще не понимаю, что хочет сделать OP

4. эй, вы можете указать мне на эту часть документов? я не видел, чтобы эта функциональность была документирована, и это было бы довольно интересно, вы можете делать с ней интересные вещи