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

在Angular指令的外部模板(templateURL)上使用$ compile

拓拔弘化
2023-03-14
问题内容

我有一个递归的Angular指令,该指令使用模板变量并在link函数中进行编译。

问题是,我的模板已经变得很长且不受控制,我想将其外部化到一个外部HTML文件中(这也将使其更易于自动缩进)。

您如何将外部模板加载到可以在内部使用的指令中$compile

我已经看过了templateURL,但是那不能让我命名变量并将其传递给$compile函数。

var template = 
           "<p>My template</p>"+
           "<this-directive val='pass-value'></this-directive>";

return {
     scope: {
     ...
     },
     ...
     link: function(scope, element){
            element.html(template);
            $compile(element.contents())(scope);
        }
}


问题答案:

您可以使用该$templateRequest服务获取模板。这是一项便捷服务,该服务还将模板缓存在中$templateCache,因此仅发出一个请求template.html

作为说明(并且不涉及递归指令的问题),其用法如下:

link: function(scope, element){
   $templateRequest("template.html").then(function(html){
      var template = angular.element(html);
      element.append(template);
      $compile(template)(scope);
   });
};

监听器(检查“网络”标签以查看单个网络请求)



 类似资料:
  • 问题内容: 我对jinja2和模板的使用非常陌生,所以我想知道是否有一种简单的方法来加载外部javascript。我在考虑使用: 但我不禁要问: 有没有一种方法可以直接从模板指令中加载此脚本? 问题答案: 您有两种选择-第一种是您的选择方式-只需将适当的标记添加到模板中即可(如果希望在扩展第一个模板的模板中覆盖它,则可以添加一个块)。 第二种方法是使用Jinja2的功能: 使用的好处是Jinja2

  • 问题内容: 我有一个遗留应用程序,该应用程序通过jQuery将一些内容插入了DOM。我希望代码库的遗留部分负责编译它插入DOM中的html。 我可以使用来编译初始html ,但是除非我从指令内部调用,否则不会编译指令模板或templateUrl添加的任何DOM元素。 我在这里做错了什么? 链接到小提琴: http://jsfiddle.net/f3dkp291/15/ index.html app

  • 问题内容: 我正在构建一个角度指令,它将在几个不同的位置使用。我不能总是保证使用该指令的应用程序的文件结构,但是我可以强制用户将和(而不是真实的文件名)放在同一文件夹中。 页面评估时,会认为相对于自身。是否可以将设置为相对于文件? 还是建议仅在指令本身中包含模板。 我想我可能想根据不同的情况加载不同的模板,因此宁愿能够使用相对路径而不是更新 问题答案: 当前正在执行的脚本文件将始终是scripts

  • 本文向大家介绍Angular 2 更改路线(使用模板和指令),包括了Angular 2 更改路线(使用模板和指令)的使用技巧和注意事项,需要的朋友参考一下 示例 现在已经设置了路由,我们需要一些方法来实际更改路由。 此示例将显示如何使用模板更改路由,但是可以在TypeScript中更改路由。 这是一个示例(无绑定): 如果用户单击该链接,它将链接到/home。路由器知道如何处理/home,因此它将

  • 问题内容: 我目前正在机器上本地测试角度。当我尝试重新创建手风琴和对话框的示例时。我在控制台中收到此错误消息,提示模板丢失。 错误示例:404未找到-localhost / angular / template / message.html 当我查看指令时,有一个模板。 该指令的目的是什么? 下载整个有角度的zip文件时,这些模板是否应该包括在内? 我是否缺少应包含在标题中的其他文件? 问题答案:

  • 问题内容: 我正在使用Jasmine编写AngularJS的指令测试,并与它们一起使用templateUrl:https : //gist.github.com/tanepiper/62bd10125e8408def5cc 但是,当我运行测试时,我得到了要点中包含的错误: 从我在文档中阅读的内容来看,我认为自己做得正确,但是事实并非如此-我在这里想念的是什么? 谢谢 问题答案: 如果您使用的是ng