首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >角JS -动态评估指令

角JS -动态评估指令
EN

Stack Overflow用户
提问于 2015-01-14 21:59:31
回答 1查看 146关注 0票数 0

假设我有几条指令:“戏剧”,“喜剧”,由于某种原因,它们有很多不同的属性,所以没有必要有一个“电影”指令。是否有一种基于范围变量的动态评估指令的方法?就像这样:

代码语言:javascript
复制
<{{movieType}} movie="{{movie}}"></{{movieType}}>

在这里,它将评估出这样的东西:

代码语言:javascript
复制
<comedy movie={{movie}}></comedy>

我刚开始变角,所以请原谅我的疯狂想法。

更新:实际上找到了一篇关于完全相同的问题/解决方案的简洁的文章:http://onehungrymind.com/angularjs-dynamic-templates/

基本上,author只有一个指令,但是根据请求交换模板:

代码语言:javascript
复制
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)};
EN

回答 1

Stack Overflow用户

发布于 2015-01-15 02:14:00

您可以在指令中使用模板函数:

代码语言:javascript
复制
 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;
           }
      }
 })

使用此解决方案,无需手动编译。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27953229

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档