假设我有几条指令:“戏剧”,“喜剧”,由于某种原因,它们有很多不同的属性,所以没有必要有一个“电影”指令。是否有一种基于范围变量的动态评估指令的方法?就像这样:
<{{movieType}} movie="{{movie}}"></{{movieType}}>在这里,它将评估出这样的东西:
<comedy movie={{movie}}></comedy>我刚开始变角,所以请原谅我的疯狂想法。
更新:实际上找到了一篇关于完全相同的问题/解决方案的简洁的文章:http://onehungrymind.com/angularjs-dynamic-templates/
基本上,author只有一个指令,但是根据请求交换模板:
var getTemplate = function(contentType) {
var template = '';
switch(contentType) {
case 'image':
template = imageTemplate;
break;
case 'video':
template = videoTemplate;
break;
case 'notes':
template = noteTemplate;
break;
}
return template;
}
return {template: getTemplate(type)};发布于 2015-01-15 02:14:00
您可以在指令中使用模板函数:
app.directive('movie', function(){
return {
restrict:'A',
template: function(element, attr){
... define templates, i.e. <comedy />
var contentType = attr.movie;
switch(contentType) {
case 'comedy':
template = comedyTemplate;
break;
case 'drama':
template = dramaTemplate;
break;
case 'suspense':
template = suspenseTemplate;
break;
}
return template;
}
}
})使用此解决方案,无需手动编译。
https://stackoverflow.com/questions/27953229
复制相似问题