当前位置: 首页 > 知识库问答 >
问题:

动态评估一个指令

薛淳
2023-03-14

假设我有几个指令:“戏剧”、“喜剧”,出于某种原因,它们有很多不同的属性,所以有一个“电影”指令并不一定有意义。有没有一种方法可以根据范围变量动态评估指令?大致如下:

<{{movieType}} movie="{{movie}}"></{{movieType}}>

它的评估结果如下:

<comedy movie={{movie}}></comedy>

我是Angular的新手,所以请原谅疯狂的想法。

更新:实际上我刚刚发现了一篇关于完全相同的问题/解决方案的文章: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)};

共有1个答案

益锦程
2023-03-14

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

 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;
           }
      }
 })

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

 类似资料:
  • ...使用进行编码。使用的原因是我想要自动化许多工作流,因此动态地创建它们对我会很有用。 我的两个输入数据流是: 我试图更好地理解的和参数,以确定如何最好地解决我的问题。我已经看过了文件,但我并不清楚其中的区别。 应使用哪些参数来确保代码以最大性能工作? 是否有方法将表达式的结果赋回到? 另外,为了使事情更加复杂,如何将作为字符串表达式中的参数传递?

  • 我是Apache Flink的新手,我正在尝试使用Flink CEP动态评估流中的模式。我正在尝试查找执行以下操作的用户登录、addtocart和注销,并且能够检测到模式,但是如果我定义了多个模式,例如登录,注销,则无法检测到模式 下面是我的代码 动作类 模式类 主类 如果我给出一个模式来评估它的输出,如下所示 如果我试图给多个模式进行评估,如下面所示,它不是评估第二个模式,而是建议我如何评估多个

  • 问题内容: 我正在尝试以下代码,该代码向RDD中的每一行添加一个数字,并使用PySpark返回RDD列表。 输入文件(sample.txt)中的内容为: 我期待这样的输出(将rdd中的数字分别添加0、1、2): 而实际输出是: 这意味着无论 范围(4) 为何,该理解仅将值3用于变量i 。 为什么会发生这种现象? 问题答案: 它的发生是由于Python的后期绑定,而不是特定于(Py)Spark的。将

  • 问题内容: 我有以下设置: 应用/指令 控制者 HTML: 这是一个非常简单的示例,但是我无法渲染它。也许有些教程没有告诉我,或者这是Angular的秘密知识? 如果我改为在and位置内删除该指令,它将显示所有记录。 但是我希望该指令比仅一个指令(最终)要复杂,以便可以在多个应用程序中重用此指令。 所以,我真的在问我们如何正确创建ng-repeat内的指令?我想念什么?上面的代码应该删除什么? 问

  • 问题内容: 说我有一大堆的是无论是变量或。我想在一个if语句中评估一组这些变量,以查看它们是否都像这样: 除非那行不通。我知道我可以这样做: 但这是非常丑陋的-特别是如果这些if语句将在我的代码中频繁出现。有什么方法可以使用更简洁的语法进行此评估(例如第一个示例)? 问题答案: 您永远不要使用(或)测试布尔变量。相反,要么写: 或使用(以及相关问题的表弟): 或使用Python的可传递比较:

  • 问题内容: 我引用的数据框如下(是列名): 但是我不想被硬编码,我想要一个变量来使其动态。怎么做? TIA 问题答案: 您可以使用方括号对列进行索引: 因此,当您接受输入为a时,您可以执行以下操作: 此外,将列作为属性访问可能导致模棱两可的行为。如具有列命名,并尝试做这可能要列不同的值,或者如果你有一个名为一样像任何有效的方法DF柱或那么这将导致语法错误。 因此,我强烈建议您使用方括号来选择列。