当前位置: 首页 > 面试题库 >

使用$ location.path但不重新加载ngView的AngularJS分页

奚无尘
2023-03-14
问题内容

我的单页应用程序加载一个主页,我想显示一系列想法。每个创意都显示在动画Flash容器中,并显示动画以在创意之间循环。

使用$ http加载提示:

$scope.flash = new FlashInterface scope:$scope,location:$location

$http.get("/competition.json")
  .success (data) ->
    $scope.flash._init data

但是,为了从历史记录导航和UX中受益,我希望更新地址栏以使用$ location为每个提示显示正确的url:

$location.path "/i/#{idea.code}"
$scope.$apply()

我在这里调用$
apply,因为此事件来自AngularJS上下文(即Flash)。我希望保留当前的控制器/视图,并且不重新加载视图。这非常糟糕,因为重新加载视图会导致整个Flash对象被丢弃,并且预加载器周期会再次开始。

我试过听$ routeChangeStart做一个preventDefault:

$scope.$on "$routeChangeStart", (ev,next,current) ->
  ev.preventDefault()
$scope.$on "$routeChangeSuccess", (ev,current) ->
  ev.preventDefault()

但无济于事。如果我能在更改$ location.path时想出一种重写视图重载的方法,那么整个事情就很麻烦了。

我仍然对AngularJS感到很满意,因此我很高兴能找到有关如何构建应用程序以实现我的目标的任何指示!


问题答案:

无需更新路径,只需使用页码更新查询参数。

设置路由以忽略查询参数更改:

....
$routeProvider.when('/foo', {..., reloadOnSearch: false})
....

并在您的应用程序中更新$location

...
$location.search('page', pageNumber);
...


 类似资料:
  • 我有一个链接。当用户单击此链接时,页面将被重新加载。我是这样做的。。。。。。 html JS 在控制器中,我使用了javascript,这对我来说似乎很糟糕。我怎么能用angularjs做

  • 我想重新加载页面。我该怎么做?

  • 我正在尝试使用: 显示在控制台中,但什么也没发生<我怎样才能解决这个问题?

  • 问题内容: 在基于多个用户上下文渲染了整个页面并提出了几个请求之后,我希望用户能够切换上下文并再次重新渲染所有内容(重新发送所有请求等)。如果我只是将用户重定向到其他地方,则一切正常: 如果使用,那么正在等待响应的请求中的某些请求将被取消,因此无法使用。此外,黑客也不起作用(什么也没有发生)。 还有另一种方法可以重新渲染页面,而无需再次手动发出所有请求吗? 问题答案: 为了进行记录,要强制angu

  • 在基于多个用户上下文呈现整个页面并发出多个请求之后,我希望用户能够切换上下文并再次重新呈现所有内容(重新发送所有请求,等等)。如果我只是将用户重定向到其他地方,事情就会正常工作: 如果使用,则上等待响应的某些请求将被取消,因此我不能使用它。此外,黑客也不起作用(什么也不会发生)。 有没有另一种方法可以重新呈现页面,而不用再次手动发出所有请求?

  • 试图在Spring中学习MVC的基础知识(我只使用Spring构建RESTAPI),但我很难理解如何将新数据返回到同一个视图,似乎我有很多重复的代码,HTML页面完全依赖于th:if语句。。。 发出POST请求,然后用新的/更新的数据加载同一ModelAndView的最佳方式是什么?代码如下: 控制器: 欢迎html: