У меня есть пользовательский тег в routeProvider
шаблоне, который вызывает directive
шаблон. version
Атрибут будет заселена объем , который затем вызывает для правильного шаблона.
<hymn ver="before-{{ week }}-{{ day }}"></hymn>
Существует несколько версий гимна в зависимости от того, какая это неделя и день. Я ожидал использовать директиву для заполнения правильной .html
части. Переменная не читается templateUrl
.
emanuel.directive('hymn', function() {
var contentUrl;
return {
restrict: 'E',
link: function(scope, element, attrs) {
// concatenating the directory to the ver attr to select the correct excerpt for the day
contentUrl = 'content/excerpts/hymn-' + attrs.ver + '.html';
},
// passing in contentUrl variable
templateUrl: contentUrl
}
});
Есть несколько файлов в директории отрывков, которые помечены before-1-monday.html
, before-2-tuesday.html
...
angularjs
angularjs-directive
Ален Гилиана
источник
источник
Ответы:
Вы можете использовать
ng-include
директиву.Попробуйте что-то вроде этого:
UPD. для просмотра
ver
атрибутаисточник
ver
изменениями атрибутов и перерисовывать директиву?<hymn ...>
должен хорошо работать. Или, может быть, пришло время создать прототип в jsfilddle ?ve take a look at your site, and changed [JSFiddle](http://jsfiddle.net/JQgG5/6/). All you need is
: {} `в объявлении директивы - изоляция области . Также настоятельно рекомендую использовать последнюю версию angular.<script type="text/ng-template" id="...">
- локальная альтернатива HTML страницыТаким образом, вы можете предоставить templateUrl через разметку
Теперь просто позаботьтесь о том, чтобы свойство contentUrl заполнялось динамически сгенерированным путем.
источник
once per $compile phase
. Другими словами, если вы используетеng-repeat
свою директиву и хотите установить отдельный шаблон на основе конкретногоng-repeat
контекста элемента, он не будет работать, потому что$compile
фаза проходит через вашу директиву один раз, прежде чемng-repeat
произойдет фактическая . Так что в этом смысле его называют один раз ...Благодаря @pgregory я смог решить мою проблему, используя эту директиву для встроенного редактирования
источник
Вам не нужна пользовательская директива здесь. Просто используйте атрибут ng-include src. Он скомпилирован, чтобы вы могли поместить код внутри. Смотрите плункер с решением для вашей проблемы.
источник
У меня была та же проблема, и я решил немного по-другому. Я использую угловой 1.4.4.
В моем случае у меня есть шаблон оболочки, который создает панель Bootstrap CSS:
Я хочу включить шаблоны тела панели в зависимости от маршрута.
Затем я включаю следующий шаблон, когда маршрут
#/students
:Шаблон panel-body.html выглядит следующим образом:
Пример данных на случай, если кто-то хочет попробовать:
источник
У меня есть пример по этому поводу.
источник