3

在执行搜索并离开后,我希望用户能够返回搜索页面(通过在浏览器中回击)并保留当前的搜索参数。我开始意识到,为了做到这一点,必须更新页面 url 以包含有关页面的数据。通过研究,我发现我可以使用在路线中$location进行更改时使用更新位置并强制页面不重新加载。reloadOnSearch但是,由于某种原因,当我更改搜索参数 ( url?...) 时,页面实际上会重新加载。知道如何修复它以防止重新加载吗?

路线.咖啡:

'use strict'

angular.module('app.rc.routes', ['ui.router'])
  .config ['$stateProvider', '$urlRouterProvider', ($stateProvider, $urlRouterProvider) ->
    $urlRouterProvider.otherwise '/'
    $stateProvider
      ...
      .state('resource_center.search',
        url: '/resources/search?term'
        templateUrl: 'views/rc/search.html'
        controller: 'SearchCtrl'
        reloadOnSearch: false
      )
      ...
  ]

搜索.咖啡:

'use strict'
angular.module('app.rc.controllers').controller 'SearchCtrl', ['$scope', '$state', '$http', '$stateParams', '$location', ($scope, $state, $http, $stateParams, $location) ->
  $scope.term = $stateParams.term || ''
  $scope.updateResults =  ->
    console.log "Loading Results"
    ...
    $location.search({term: $scope.term})

参考:

作为如何正确执行此操作的参考,我使用的是:https ://stackoverflow.com/a/12481175/1382588

4

1 回答 1

2

ui-router 当前不支持 reloadOnSearch

https://github.com/angular-ui/ui-router/issues/367

您应该能够通过具有两种状态在 ui-router 中执行您想要执行的操作:搜索页面状态和搜索结果子状态。

例如,搜索将位于 /search,搜索结果位于 /search/{query}。搜索页面将有一个显示搜索框的视图和一个显示搜索结果的嵌套视图。搜索按钮将对搜索结果状态进行状态更改。这将导致搜索结果嵌套视图更新,而不会更改搜索页面的外观。

于 2013-10-28T14:33:55.130 回答