【发布时间】:2016-06-13 09:41:04
【问题描述】:
我在 AngularJS 中为我在每个页面上加载的网站的页脚部分创建了一个指令。在里面,我添加了一些需要在页面加载后运行的 jQuery 代码——这是我能想到的唯一解决方案。下面是它的外观示例:
app.directive('footer', function () {
return {
restrict: 'A',
replace: true,
scope: {user: '='},
templateUrl: "PATH_TO_HTML_FILE",
controller: ['$scope', '$filter', function ($scope, $filter) {
// Some random jQuery goes here, for example:
$('.search-nav > a').on('click', function(){
$('.search-drop-down').slideDown();
});
// Close Search form
function closeSearchField() {
$('.search-drop-down').slideUp();
}
}]
};
});
我不确定这是否是最好的方法,但我现在想做的是将控制器中的这个 jQuery 代码放在一个单独的文件中。原因:我们使用的前端不知道 AngularJS 甚至没有提到指令等,所以我只想有一个单独的文件,其中包含在页面加载时运行的所有 jQuery 代码,如果他们可以编辑需要。一旦指令本身被加载,我只想获取文件的内容并在上面的控制器主体中运行它。关于如何做到这一点的任何想法?甚至是整个问题的更好解决方案?
【问题讨论】:
-
您的网站是SPA(即是否在每次视图更改时重新加载)?如果是 - 您想在每次视图更改时执行此 jquery 代码 还是只执行一次?如果它不是一个 SPA,为什么不直接在标题中包含这个脚本呢?
-
这里是一个SPA网站。有些代码我想在每次更改时执行,有些则不是。这实际上取决于我在视图中是否有指令,这就是为什么我正在寻找一种方法将指令特定的代码放在单独的空间中,这对于只处理的非角度开发人员来说是可以访问和理解的html、js和css。
标签: javascript jquery angularjs angularjs-directive