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

相对于.js文件的Angular指令templateUrl

曹高阳
2023-03-14
问题内容

我正在构建一个角度指令,它将在几个不同的位置使用。我不能总是保证使用该指令的应用程序的文件结构,但是我可以强制用户将directive.jsdirective.html(而不是真实的文件名)放在同一文件夹中。

页面评估时directive.js,会认为templateUrl相对于自身。是否可以将设置templateUrl为相对于directive.js文件?

还是建议仅在指令本身中包含模板。

我想我可能想根据不同的情况加载不同的模板,因此宁愿能够使用相对路径而不是更新 directive.js


问题答案:

当前正在执行的脚本文件将始终是scripts数组中的最后一个文件,因此您可以轻松找到其路径:

// directive.js

var scripts = document.getElementsByTagName("script")
var currentScriptPath = scripts[scripts.length-1].src;

angular.module('app', [])
    .directive('test', function () {
        return {
            templateUrl: currentScriptPath.replace('directive.js', 'directive.html')
        };
    });

如果不确定脚本名称是什么(例如,如果要将多个脚本打包到一个脚本中),请使用以下命令:

return {
    templateUrl: currentScriptPath.substring(0, currentScriptPath.lastIndexOf('/') + 1) 
        + 'directive.html'
};

注意 :在使用闭包的情况下,您的代码应位于外部,以确保在正确的时间评估currentScript,例如:

// directive.js

(function(currentScriptPath){
    angular.module('app', [])
        .directive('test', function () {
            return {
                templateUrl: currentScriptPath.replace('directive.js', 'directive.html')
        };
    });
})(
    (function () {
        var scripts = document.getElementsByTagName("script");
        var currentScriptPath = scripts[scripts.length - 1].src;
        return currentScriptPath;
    })()
);


 类似资料:
  • 问题内容: 我目前正在相对于当前窗口位置说明templateUrl。 如何使templateUrl相对于应用程序的根目录?我正在寻找这样的东西: AngularJS可以做到吗? 问题答案: 看起来受支持了。取自AngularJS Google Group上的 一个线程: 带有“ /”前缀的URL相对于域,没有“ /”前缀的URL相对于主页(“ index.html”)页面或基本URL(如果在htm

  • 请您帮助我更正Jquery pttimeselect timepicker插件的这个角度指令好吗。 http://pttimeselect.sourceforge.net/doc/documentation.html Plunker链接:http://tinyurl.com/hr7lker 目前,我有如下指令,但收到此错误类型错误:无法读取未定义的属性“options”

  • 问题内容: angular js如何监视自定义指令上的属性以接受要绑定的角度值 这是我到目前为止的内容: 但观察到的值返回为未定义 问题答案: 来自http://docs.angularjs.org/api/ng.$compile.directive.Attributes: 所有这些在Angular中均视为等效: 所以属性归一化为 因此,这就是您想要的:

  • 问题内容: 当我通过相对路径引用CSS文件中的图片或其他文件时,是使用CSS文件相对于CSS文件还是HTML文件的路径? 问题答案: 是的,这是相对于 这是一个示例布局: CSS中:

  • 问题内容: 我刚刚得到了指令,以插入一个模板以附加到其元素,如下所示: 我还使用了一个名为DataTables的jQuery插件。它的一般用法是这样的:$(’table#some_id’)。dataTable()。您可以将JSON数据传递到dataTable()调用中以提供表数据,或者可以将数据存储在页面上,其余的将进行处理。.我正在做后者,HTML页面上已经有行。 但是问题是我必须在table