我正在构建一个角度指令,它将在几个不同的位置使用。我不能总是保证使用该指令的应用程序的文件结构,但是我可以强制用户将directive.js
和directive.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