Мне нужно определить шаблон на основе даты. Я видел хорошее example. Но в этом примере шаблоны настолько просты, что он мог использовать строки. В моем случае я хочу использовать PHP для создания шаблонов, так что я использовал это следующим образом:динамический шаблон для директивы в angularjs
eng.directive('vis', function ($compile) {
var getTemplate = function(ir) {
var k = (ir.visits.last && parseInt(ir.visits.last.done))?'V':'E';
var s = (ir.data.kind == 0)?'H':'V';
return s+k+'T';
}
var linker = function(scope, element, attrs) {
scope.$watch('ir',function(){
if (!scope.ir) return;
element.html(jQuery('#'+getTemplate(scope.ir)).html()).show();
$compile(element.contents())(scope);
})
}
return {
restrict: "E",
rep1ace: true,
link: linker
};});
и шаблоны:
<div id=HVT style="display:none">
<p>horizontal view template</p>
</div>
<div id=HET style="display:none">
<p>horizontal {{1+5}} Edit template</p>
</div>
<div id=VVT style="display:none">
<p>vertical view template</p>
</div>
<div id=VET style="display:none">
<p>vertical Edit template</p>
</div>
Я уверен, что есть более разумный способ. лучше использовать templateUrl? может кто-нибудь сказать мне, как использовать его в моем случае?
Редактировать: есть проблема. шаблон не видит сферу
template & templateUrl может выполнять функцию типа: 'function (el, attrs) {return '/ tmpls /' + attrs.template; } ' –
Я пробовал метод выше, теперь он работает отлично, даже если у меня есть контроль над навигацией, проблема только в том, что у меня есть динамическое состояние (состояние (« manualTest /: testName »), и я возвращаюсь на страницу динамического состояния, -называет вызов дважды – Anand