是否可以更改$ location而不触发相关的$ route

时间:2012-10-17 12:59:20

标签: javascript angularjs

是否可以在不触发关联路线的情况下更改Angular.js中的位置路径。也许类似于以下内容(不是工作代码):

$location.path("/booking/1234/", {silent: true})

3 个答案:

答案 0 :(得分:1)

您可以在路由器中将reloadOnSearch设置为false,然后您可以更改网址的“搜索”部分。

这个想法是你应该设计你的URL方案,这样如果基本URL改变,它代表一个不同的资源,应该重新加载。如果搜索部分发生更改(?之后的部分,则可能只是更改过滤器或排序顺序等)。

答案 1 :(得分:0)

是的,可以使用解决方法。

var off = $scope.$on('$stateChangeStart', function (e) {
             e.preventDefault();
             off();
          });
$location.path("/booking/1234/");

它的工作方式是 - 它缓存下一个状态更改事件 - 让他不会发生(通过调用" preventDefault",然后调用自己取消注册此事件处理程序)。

仅在Chrome上测试过。 在这篇文章中看到了它:https://github.com/angular-ui/ui-router/issues/64

希望有所帮助

答案 2 :(得分:0)

以下是以角度模块编译的解决方案 - https://github.com/garakh/ngSilent 只需添加模块然后使用这种方式:

$ngSilentLocation.silent('/new/path/');