AngularJS后处理链接
AngularJS post process links
我有一个laravel应用程序,它会吐出默认的分页,但它会在每个链接中添加"page",并忽略查询字符串中当前的内容。这不是一个老掉牙的问题,尽管只是想解释一下这个问题。
基本上,我需要为分页链接添加某种处理程序。查询字符串的其余部分是通过我创建指令的控件来处理的,因此它们很容易访问。通过控制器,我可以很容易地创建"正确"的url,但我想找出最好的方法
我听说在angularJS中最好避免使用DOM本身,因为它不是jQuery,那么在angularJS中处理这个问题的最佳实践方法是什么?
在jQuery中,我会这样做。
jQuery('.pagination-wrap a').on('click', function(event) {
event.preventDefault();
var link = generateProperLink(jQuery(this).attr('href'));
window.location.href = link;
});
但是我该如何在角度控制器中做到这一点(减去明显使用的jQuery)。
在AngularJS中使用jQuery没有错,您只需要让AngularJS知道它是否需要做任何事情。这可以简单到jQuery事件处理程序回调中的$scope.$apply()
(或任何非角度构造),也可以更复杂,比如在作用域的上下文中编译DOM更改。
在你的情况下,angular需要知道"正确的链接"吗?如果没有,您可以将代码封装在属性指令中。
以下是说明性的,我还没有测试过
(function(app, $) {
app.directive('fixUrl', fixUrl);
function fixUrl() {
return {
restrict: 'A',
link: link
};
function link(scope, element, attributes) {
$(element).on('click', function(event) {
event.preventDefault();
var link = generateProperLink(element);
window.location.href = link;
});
}
function generateProperLink(element){
return $(element).attr('href');
}
}
}(angular.module('app'), jQuery));
然后。。。
<a class='pagination' fix-url>Whatever</a>
我认为你可以使用angular.element jqlite,它是jquery的子集,它拥有你可以使用的大多数jquery方法,请参阅https://docs.angularjs.org/api/ng/function/angular.element
您可以对可重复使用的组件使用指令
<a id="someID" urlUsage><a>
//directive
App.directive('urlUsage',function(){
var generateProperLink = function(ele){
return ele.attr('href');
}
return {
restrict: 'A',
link:function(scope,ele,attrs) {
ele.on('click',function(){
event.preventDefault();
var link = generateProperLink(ele);
window.location.href = link;
})
}
}
})
相关文章:
- 单击页面上的链接后高度发生变化
- jQuery mouseup在拖离链接后未启动
- 阻止在单击链接后转到页面顶部
- 链接无法处理图像
- 在npm链接后找不到命令
- 如何在单击链接后将局部变量发送到部分呈现
- 单击链接后显示加载程序
- 信息没有'点击AngularJS中的链接后不会刷新.I'我得到了{{value}},但没有得到数据
- 单击链接后未显示警报
- 如何在点击链接后从用户取消对话框中获得回调以选择移动应用程序
- 每次点击链接后$.ajax()获取循环
- 如何链接后的CSS动画
- 单击外部链接后重定向,只打开一个选项卡/窗口
- 单击指向外部网站的链接后,通过MySQL保存数据
- 单击链接后如何更改滚动条位置
- 强制浏览器在单击链接后保存文件
- 如何阻止页面在单击链接后跳转到顶部
- 单击超链接后在同一页面中显示对象
- 单击按钮/链接后更改ng-include内的内容
- 单击链接后,导航栏中的子菜单正在折叠