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

有棱角的js指令动态模板URL

姚善
2023-03-14

我在routeProvider模板中有一个自定义标签,它调用指令模板。version属性将由作用域填充,然后调用正确的模板。

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

这首赞美诗有多个版本,根据星期几而定。我希望使用该指令来填充正确的。html部分。模板URL未读取变量。

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

摘录目录中有多个文件在-1-monday之前标记为。html,星期二2点之前。html


共有3个答案

杜辉
2023-03-14

多亏了@pgregory,我可以通过使用此指令进行内联编辑来解决我的问题

.directive("superEdit", function($compile){
    return{
        link: function(scope, element, attrs){
            var colName = attrs["superEdit"];
            alert(colName);

            scope.getContentUrl = function() {
                if (colName == 'Something') {
                    return 'app/correction/templates/lov-edit.html';
                }else {
                    return 'app/correction/templates/simple-edit.html';
                }
            }

            var template = '<div ng-include="getContentUrl()"></div>';

            var linkFn = $compile(template);
            var content = linkFn(scope);
            element.append(content);
        }
    }
})
史骏祥
2023-03-14

您可以使用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>'
   }
});

更新。用于观看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>'
   }
});
杜晨朗
2023-03-14
emanuel.directive('hymn', function() {
   return {
       restrict: 'E',
       link: function(scope, element, attrs) {
           // some ode
       },
       templateUrl: function(elem,attrs) {
           return attrs.templateUrl || 'some/path/default.html'
       }
   }
});

所以你可以通过标记提供templateUrl

<hymn template-url="contentUrl"><hymn>

现在您只需注意用动态生成的路径填充属性contentUrl。

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

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

  • 问题内容: 我有一个带有变量类型的指令myDirective。如果我运行,我希望指令使用templateUrl:x-template.html。如果我愿意,指令可以使用templateUrl:y-template.html。 这是我目前的指令。 我通过stackoverflow和angular文档阅读,但是没有找到我需要的任何东西。 我现在正在尝试按照以下方式进行操作: 但是不知道在哪里做。 你们

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

  • 问题内容: 任何人都有一个简单的指令来自动显示Bootstrap模式吗?在Bootstrap 3中,他们取消了自动显示模态的功能,因此我不能使用有角度的ng-if show块。任何帮助都会很棒。 问题答案: 已针对angular 1.2和Bootstrap 3.1.1更新: http : //embed.plnkr.co/WJBp7A6M3RB1MLERDXSS/ 我扩展了Ender2050的答案

  • 我使用的是角度。js用于一个应用程序,该应用程序通过在下面的td中显示tr并向下滑动div,使用隐藏的tr来模拟滑出效果。这个过程使用击倒技术非常有效。js,因为我可以使用 对于angular,必须将ng repeat应用于html元素,这意味着我似乎无法使用标准方法重复这些双行。我对此的第一个反应是创建一个指令来表示这些双TR,但这还不够,因为指令模板必须有一个根元素,但我有两个(<代码> 如果