如何将包含10s参数的对象$rootscope传递给UI-Router of Angularjs中的state?

how to pass $rootscope which is an object includeing 10s of parameter to state in UI-Router of Angularjs?

你好,我是一名新开发人员,我在使用 UI-Router 将根范围参数传递到我的状态时遇到了这个问题。

这是我的 href,我想将其更改为 ui-sref :

href="/mycarts/{{cats.id}}?{{$root.filterParams}}

这是我的状态:

.state('mycarts', {
    url : '/mycarts/:id?vendors&' +
          'price_to&price_from&manufacturer&' +
          'editor&theme&page&order&filter_by&no',
    templateUrl : 'partials/mycarts.html',
    controller : 'MyCartsController'

这就是我将参数传递给控制器​​的方式:

    $scope.id = $stateParams.id;

所以基本上 id 参数的所有内容都可以正常工作,但我还需要传递其他字符串查询,这很多,我不知道如何将其他字符串查询传递给它更改我的 href 的正确方法是什么以上为 ui-sref.

我会像这样在您的控制器中创建一个用于 ui-sref 的对象

$scope.linkParams = angular.extend({id: $scope.cats.id}, $scope.$root.filterParams);

(参见 https://docs.angularjs.org/api/ng/function/angular.extend

然后在ui-sref

中使用
ui-sref="mycart(linkParams)"

如果确实不需要使用 href,请在控制器中编写一个函数,并在单击按钮或 link 时调用它。

HTML

<a style="text-decoration: underline" href="" ng-click="gotToMycarts()">Go</a>

Javascript

.controller('TestController',function($state){
   $state.transitionTo('mycarts',{id :12,vendors:'Test',price_to:200});
}).controller('MyCartsController',function($state, $stateParams){
  console.log($stateParams.id);
  console.log($stateParams.price_to)
})