当前位置: 首页 > 面试题库 >

AngularJS指令动态模板

欧阳嘉
2023-03-14
问题内容

我正在尝试根据范围值使用不同的模板进行指令。

这是我到目前为止所做的,我不知道为什么它不起作用http://jsbin.com/mibeyotu/1/edit

HTML元素:

<data-type content-attr="test1"></data-type>

指示:

var app = angular.module('myApp', []);

app.directive('dataType', function ($compile) {

    var testTemplate1 = '<h1>Test1</h1>';
    var testTemplate2 = '<h1>Test2</h1>';
    var testTemplate3 = '<h1>Test3</h1>';

    var getTemplate = function(contentType){

        var template = '';

        switch(contentType){
            case 'test1':
                template = testTemplate1;
                break;
            case 'test2':
                template = testTemplate2;
                break;
            case 'test3':
                template = testTemplate3;
                break;
        }

        return template;
    };

    var linker = function(scope, element, attrs){
        element.html(getTemplate(scope.content)).show();
        $compile(element.contents())(scope);
    };

    return {
        restrict: "E",
        replace: true,
        link: linker,
        scope: {
            content:'='
        }
    };
});

问题答案:

1)您正在将内容作为属性传递到html中。试试这个:

element.html(getTemplate(attrs.content)).show();

代替:

element.html(getTemplate(scope.content)).show();

2)指令的数据部分正在被编译,因此您应该使用其他东西。代替数据类型,例如datan-type。

链接在这里:

http://jsbin.com/mibeyotu/6/edit



 类似资料:
  • 本文向大家介绍AngularJS动态菜单操作指令,包括了AngularJS动态菜单操作指令的使用技巧和注意事项,需要的朋友参考一下 前言         在我们创建一个angularJS应用的时候,菜单往往往是不可或缺的元素之一。也许在我们静态菜单的时候不会发现在指令中操作菜单收缩、折叠展开没有任何问题,因为我们在操作之前,页面元素渲染已经完成,所以在指令里面通过element查找目标元素可以成功

  • 问题内容: 我在模板中有一个需要模板的自定义标签。该属性将由范围填充,然后需要正确的模板。 根据赞美诗的星期和日期,它有多种版本。我期望使用该指令来填充正确的部分。不会读取变量。 有在摘录目录多个文件被标记,… 问题答案: 您可以使用指令。 尝试这样的事情: UPD。 用于观看属性

  • 问题内容: 我正在尝试根据当前项目动态显示ng-repeat指令中的多个模板之一。 我的JSON数据如下所示: 我的目标是动态渲染数据树,每个组包含多个部分。这些组都将具有相同的模板,但是每个部分都应基于名称字段具有自己的模板。 假设顶层HTML是: 理想情况下,每个部分还需要具有自己的范围数据和与其关联的控制器。我很幸运用Knockout构建了这种类型的系统,但是我想了解Angular的做事方式

  • 问题内容: 如何使用动态模板创建指令? 这就是我现在所拥有的,它可以正确显示标签。但是,我不确定如何在模板上附加其他HTML。或将2个模板合并为1个。 问题答案: 有类似的需求。做这份工作。(不完全确定这是否是“ THE”方法,仍然可以通过角度进行工作) http://jsbin.com/ebuhuv/7/edit-我的探索测试。 需要注意的一件事(以我的示例为例),我的要求之一是,一旦单击“保存

  • 问题内容: 我有这样的设置: 控制器广播事件 指令侦听,然后通过append将其写入DOM,并以此创建指定指令的新元素。 IE浏览器: Angular从未调用过指令 当我检查DOM(并调试)时,我看到Controller 和指令正在执行其工作,并且有新的元素。 什么不见​​了?动态创建这些元素后需要做什么来触发指令调用? 问题答案: 请参阅。您可以类似于以下方式使用此服务: 这将执行新元素的编译和

  • 问题内容: 我花了一段时间试图找到一个优雅的解决方案,而我却找到了一个“可行”的解决方案,它感觉不是最简单或正确的做事方式。 所以,我的问题是…如何动态加载指令!在某些情况下,以下是我希望我能摆脱它的方式!除了模板加载之外,我没有包含路由或其他任何内容,而是为下面的控制器分配了ng- controller。 app.js template.html 任何人都可以提供的建议将不胜感激,如果我做任何明