Angularjs ui-router将parent url参数添加到当前状态

时间:2016-02-18 09:56:47

标签: angularjs angular-ui-router url-parameters

这是我的应用状态

  .state('app', {
      url: "/?:site_id",
      templateUrl: "/controls/angular/templates/partial/app.html",
      abstract: true
  })
  .state('app.popup', {
    url: "popup",
    templateUrl: "/controls/angular/templates/popup.html",
    controller: 'PopupController'
  })

app root(配置为抽象)具有参数(site_id),我可以在应用程序的所有其他页面中使用。

我有可以更改网站的下拉列表。 如何将网站url参数添加到当前页面以及所有其他存在的参数

只需更改root site_id参数。

     var oSelect =  $('#site_select_tag').select2();
        oSelect.on("change", function (e) {
       var curr_site_id = e.val;                                
       $state.go to => ?????????                               
       //scope.site_id = e.val;
       scope.onChange()(e.val);
});

3 个答案:

答案 0 :(得分:1)

由于

解决方案很简单

$state.go('.', {site_id: e.val})

保留所有其他参数并设置新参数

答案 1 :(得分:0)

您可以将选项传递给go的{​​{1}}方法:

  

$ state.go(to [,toParams] [,options])

https://github.com/angular-ui/ui-router/wiki/Quick-Reference#stategoto--toparams--options

$state

您可以在$state.go('myState', {'myParam': myValue}); 上设置参数:

  

ui-sref ='stateName({param:value,param:value})'

https://github.com/angular-ui/ui-router/wiki/Quick-Reference#ui-sref

ui-sref

您可以将当前状态显示为<a ui-sref="myState({'myParam': myValue})">myLink</a> ,将当前参数设置为$state.current.name,这样您可以执行以下操作:

$state.params

答案 2 :(得分:0)

如果我正确理解你在$ stateProvider中设置后尝试操作状态数据。如果是这样,您应该设置自己的状态提供程序,如Mean.io

// $meanStateProvider, provider to wire up $viewPathProvider to $stateProvider
angular.module('mean.system').provider('$meanState', ['$stateProvider', '$viewPathProvider', function($stateProvider,viewPathProvider){
    function MeanStateProvider() {
        this.state = function(stateName, data) {
          if (data.templateUrl) {
            data.templateUrl = $viewPathProvider.path(data.templateUrl);
          }        
          $stateProvider.state(stateName, data);        
          return this;
        };    

        this.$get = function() {
          return this;
        };
    }
    return new MeanStateProvider();
    }]);