在我的Angular应用中,某些路由将reloadOnSearch设置为false,以便Bootstrap tabs正常运行。

当其中一个视图中的链接链接到那些视图中的另一个时,就会出现问题。链接不起作用,因为控制器不会重新加载视图。

因此,我必须在这些链接上使用ng-click

$scope.goToThisPage = function () {
  $location.path(newPage);
  $route.reload();
};


但是,这不起作用,并且总是将我带到默认路由。如果将函数的最后一行替换为$scope.$apply(),也会发生同样的情况。

reloadOnSearch设置为false的路线之间移动的最佳方法是什么?

最佳答案

每个选项卡都有单独的控制器吗?

据我所知,reloadOnSearch: false仅在查询参数或url中的哈希值更改时才阻止控制器重新加载。因此,在/route/page?param=1/route/page?param=2之间移动不会重新加载控制器,但是绝对可以。

我不完全了解您如何解决此问题,但就其价值而言,这是当我拥有一个控制器时如何解决reloadOnSearch问题的方法。即使在搜索参数更改时不会重新加载控制器和视图,但/route/anotherpage仍会重新加载,因此我只听控制器中的$location并对回调中的绑定范围变量进行任何更改。

编辑

查看选项卡的文档,您是否可能不仅仅使用链接来切换选项卡,而是使用$locationChangeSuccess调用.tab("show")方法?

09-16 11:09