AngularJS reloadOnSearch无效

时间:2013-10-28 14:00:44

标签: angularjs angular-ui-router

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

routes.coffee:

'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
      )
      ...
  ]

search.coffee:

'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

1 个答案:

答案 0 :(得分:2)

ui-router

目前不支持 reloadOnSearch

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

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

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