执行搜索并导航后,我希望用户能够返回搜索页面(通过在浏览器中回击)并保留当前搜索参数。我已经意识到,为了做到这一点,必须更新页面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
答案 0 :(得分:2)
https://github.com/angular-ui/ui-router/issues/367
您应该能够通过两种状态在ui-router中执行您想要执行的操作:搜索页面状态和搜索结果子状态。
搜索将在/搜索示例,搜索结果位于/ search / {query}。搜索页面将显示搜索框,以及嵌套视图以显示搜索结果。搜索按钮将对搜索结果状态进行状态更改。这将导致搜索结果嵌套视图更新,而不会更改搜索页面的外观。