Angularjs $location服务和链接的URL
我有一个Angular指令,显示搜索结果的分页链接。我当前对页面链接的实现是使用事件 例如:Angularjs $location服务和链接的URL,angularjs,Angularjs,我有一个Angular指令,显示搜索结果的分页链接。我当前对页面链接的实现是使用事件 例如: $scope.goToNextPage = function() { if ($scope.pageIndex < $scope.maxPage()) { $scope.pageIndex = $scope.pageIndex + 1; } }; 但是因为我使用的是锚,所以我需要知道放在HREF中的URL是什么 我是否缺少任何选择或解决方案 基本上,我需要查看调用$locatio
$scope.goToNextPage = function() {
if ($scope.pageIndex < $scope.maxPage()) {
$scope.pageIndex = $scope.pageIndex + 1;
}
};
但是因为我使用的是锚,所以我需要知道放在HREF中的URL是什么
我是否缺少任何选择或解决方案
基本上,我需要查看调用
$location.search({pageIndex:2})
可能需要为此使用一个函数。比如:
$location.search({pageIndex: 2});
$scope.goToPage = function (pageNum) {
$location.search({pageIndex: pageNum});
}
如果使用此方法,请在ngClick上使用它,而不是作为href
另一个选择是对url参数进行字符串化。这需要jQuery函数:
<a ng-href="?{{pagingQueryString(2)}}">Page 2</a>
$scope.pagingQueryString = function (pageNum) {
var queryObject = angular.extend($location.search(), {pageIndex: pageNum});
// jquery function to stringify the object to url
return $.param(queryObject);
}
您还可以将其全部封装在过滤器中:
app.filter('pagingQueryString', function ($location) {
return function (pageNum) {
var queryObject = angular.extend({}, $location.search(), {pageIndex: pageNum});
// jquery function to stringify the object to url
return '?' + $.param(queryObject);
}
}
HTML可以是:
<a ng-href="{{2 | pagingQueryString}}">Page 2</a>
您还没有向我们展示您的指令到底是什么样子的。您是否尝试过Angular wiki()中的示例。对不起,我应该发布更多代码。然而,我的实现就像JSFIDLE一样。具体地说,我的锚点将ng click指令设置为$scope上的方法。例如,$scope.nextPage()我想做的是删除ng click,并将其替换为包含页面索引和其他任何内容的href。谢谢!我确实写了一些类似的东西,但希望我不需要:)。我确实喜欢过滤器的想法,尽管我很好奇这是否是过滤器的“正确”使用?它们不是更适合视觉格式吗?它们可以用于很多事情。考虑一下标准的“过滤器”过滤器:model.myArray |过滤器:searchText。这将进入并过滤和限制整个数组,因此可能会在您以ngRepeat方式迭代UI时更改UI。因此,它们可能不仅仅是视觉变化,比如“货币”或“数字”过滤器。请注意,使用过滤器或函数方法的次数越多,可能会对性能产生影响。过滤器或函数将每$digest循环运行一次。使用ngClick将解决该问题,因为它仅在单击项目时运行。如果你真的需要适当的href,你可能想做一个单向绑定,这在这里的watch-fighters指令中是可用的:也许我可以不使用适当的href。我最喜欢的是网站在工作方式上保持一致。例如,一个锚点有一个href,而不是运行一些JS。对某些人来说,这可能不是什么大不了的事,但我只是认为锚应该是锚。这是有道理的。上述解决方案对性能的影响将非常小,您可以使用$watch fighters指令(或类似指令)消除它,这将允许您保留您的HREF(如果您暴露于外部世界,搜索引擎也会更好)。
<a ng-href="{{2 | pagingQueryString}}">Page 2</a>