调用$ location.search()后,在ui-router中更新$ stateParams

Ray*_*zer 5 angularjs angular-ui-router ionic-framework

我有一个角度应用程序,它使用离子框架,后端使用ui-router.

在我的一个控制器中,我打电话给:

$location.search('filter','sometext');
Run Code Online (Sandbox Code Playgroud)

我在路由配置中禁用了reloadOnSearch.我注意到更新位置不会更新$stateParams.有没有办法强制$stateParams更新位置更新?我查看了ui-router文档,但没有看到任何关于这种情况,但也许我错过了它.

小智 5

我有类似的情况.如果您已禁用reloadOnSearch,则无法跟踪路由更新,但我找到了此案例的解决方案.

观看$stateParams:

$scope.$watchCollection('$stateParams', function (newParams) {
    var search = $location.search();

    if (angular.isObject(newParams)) {
      angular.extend(search, newParams);
    }

    $location.search(search).replace();
});
Run Code Online (Sandbox Code Playgroud)

改变$stateParams,而不是路线:

$scope.$stateParams.offset += $scope.$stateParams.limit;
Run Code Online (Sandbox Code Playgroud)

完全有效的例子.