Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Angularjs $location服务和链接的URL_Angularjs - Fatal编程技术网

Angularjs $location服务和链接的URL

Angularjs $location服务和链接的URL,angularjs,Angularjs,我有一个Angular指令,显示搜索结果的分页链接。我当前对页面链接的实现是使用事件 例如: $scope.goToNextPage = function() { if ($scope.pageIndex < $scope.maxPage()) { $scope.pageIndex = $scope.pageIndex + 1; } }; 但是因为我使用的是锚,所以我需要知道放在HREF中的URL是什么 我是否缺少任何选择或解决方案 基本上,我需要查看调用$locatio

我有一个Angular指令,显示搜索结果的分页链接。我当前对页面链接的实现是使用事件

例如:

$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>