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

Angular.js指令动态模板URL

狄宜然
2023-03-14
问题内容

我在routeProvider模板中有一个需要模板的自定义标签directive。该version属性将由范围填充,然后需要正确的模板。

<hymn ver="before-{{ week }}-{{ day }}"></hymn>

根据赞美诗的星期和日期,它有多种版本。我期望使用该指令来填充正确的.html部分。不会读取变量templateUrl

emanuel.directive('hymn', function() {
    var contentUrl;
    return {
        restrict: 'E',
        link: function(scope, element, attrs) {
            // concatenating the directory to the ver attr to select the correct excerpt for the day
            contentUrl = 'content/excerpts/hymn-' + attrs.ver + '.html';
        },
        // passing in contentUrl variable
        templateUrl: contentUrl
    }
});

有在摘录目录多个文件被标记before-1-monday.htmlbefore-2-tuesday.html


问题答案:

您可以使用ng-include指令。

尝试这样的事情:

emanuel.directive('hymn', function() {
   return {
       restrict: 'E',
       link: function(scope, element, attrs) {
           scope.getContentUrl = function() {
                return 'content/excerpts/hymn-' + attrs.ver + '.html';
           }
       },
       template: '<div ng-include="getContentUrl()"></div>'
   }
});

UPD。 用于观看ver属性

emanuel.directive('hymn', function() {
   return {
       restrict: 'E',
       link: function(scope, element, attrs) {
           scope.contentUrl = 'content/excerpts/hymn-' + attrs.ver + '.html';
           attrs.$observe("ver",function(v){
               scope.contentUrl = 'content/excerpts/hymn-' + v + '.html';
           });
       },
       template: '<div ng-include="contentUrl"></div>'
   }
});


 类似资料:
  • 问题内容: 我正在尝试根据范围值使用不同的模板进行指令。 这是我到目前为止所做的,我不知道为什么它不起作用http://jsbin.com/mibeyotu/1/edit HTML元素: 指示: 问题答案: 1)您正在将内容作为属性传递到html中。试试这个: 代替: 2)指令的数据部分正在被编译,因此您应该使用其他东西。代替数据类型,例如datan-type。 链接在这里: http://jsb

  • 我在模板中有一个自定义标签,它调用模板。属性将由作用域填充,然后调用正确的模板。 这首赞美诗有多个版本,根据星期几而定。我希望使用该指令来填充正确的

  • wx:if 预期: any 用法: 根据表达式的值的 truthiness 来有条件地渲染元素。在切换时元素及它的数据绑定 / 组件被销毁并重建。 注意:如果元素是 <block/>, 注意它并不是一个组件,它仅仅是一个包装元素,不会在页面中做任何渲染,只接受控制属性。 WARNING 当和 wx:if 一起使用时,wx:for 的优先级比 wx:if 更高。详见列表渲染教程 参考: 条件渲染 -

  • 问题内容: 我很困惑。如果每页只能使用一次,则如何使用位于不同模块,不同.js文件中的指令。看: 因此,我现在如何指向页面上的secondModule,而无需从mainModule.js引用它 问题答案: 有一种解决方案,可以以编程方式在页面上引导几个角度模块(docs)。 您必须从html中删除属性。 定义几个模块: 然后在index.html中执行: 这是使用此解决方案的有效plnkr。

  • 问题内容: 我有一个用于渲染表单元格的指令(请参阅我在这里如何编译它的方法,基本上是在[Angular.js指令模板中使用父/继承作用域中的变量,现在在两个s中使用,一个用于行,一个对于列,所以基本上 包含50行和8列的列,对(渲染)性能产生了很大的影响(无论如何还是很明显的)。 所以我一直在寻找一种改善它的方法。首先,我尝试摆脱对列的内部重复,创建一个在内部对列进行迭代的方法,找到它们的模板,创

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