2015-05-09 2 views

ответ

2

Директива:

myModule.directive('foo', function() { 
    return { 
     scope: { 
      templateType: '@' 
     }, 
     template: '<div ng-if="templateType == \'a\'">' + 
      ' this is template A ' + 
      '</div>' + 
      '<div ng-if="templateType == \'b\'">' + 
      ' this is template B ' + 
      '</div>' 
    }; 
}); 

Шаблон:

<foo template-type="{{ templateType }}"></foo> 
<a ng-click="templateType = 'b'" href="">Set template to b</a> 

Контроллер:

$scope.templateType = 'a'; 
+1

Я хотел бы предложить использовать различные маршруты/вид для каждого частичной точки зрения – harishr

+1

, что если и шаблоны большие ..? –

+0

Затем вы будете экстернализовать шаблон в файл и использовать templateUrl, как и для любой другой директивы. –

2

Вы можете расширить пример при условии, by @JB Nizet и использовать ng-include для замены шаблонов, а управление шаблонами большего размера становится проще.

myModule.directive('foo', function() { 
    return { 
     scope: { 
      templateType: '@' 
     }, 
     template: '<div ng-include="\'/templateRoot/\' + templateType">'+ 
        '</div>' 
    }; 
}); 

Теперь вы можете создавать отдельные файлы шаблон и сделать их доступными по конкретной URL (в данном случае /templateroot/a или /templateroot/b)

+0

используя 'ng-include' действительно имеет смысл .. + 1 –

Смежные вопросы