2016-02-18 1 views
0

Это мое приложение состояниеAngularjs UI-маршрутизатор параметр добавить родительский URL текущего состояния

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

Корневой приложение (что конфигурации в качестве реферата) имеет параметр (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); 
}); 
+0

Ты чтобы передать параметры в '' $ state.go''? –

+0

Я не знаю, какие опции для добавления одного параметра в текущее состояние (с параметрами), я добавляю, например, «state go». – 24sharon

ответ

1

Благодарности

Решение простое

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

Держите все другие параметры и установить новый параметр

+0

быстрый и простой способ. Это должен быть ответ. – alfredopacino

0

Вы можете передать параметры в go метод $state:

$ state.go (к [, toParams] [, опции])

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

$state.go('myState', {'myParam': myValue}); 

И вы можете установить параметры на ui-sref:

щ-sref = 'StateName ({параметр: значение, парам: значение})'

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

<a ui-sref="myState({'myParam': myValue})">myLink</a> 

Вы можете получить доступ к информации о текущем состоянии, как $state.current.name а текущие параметры как $state.params, так что вы можете сделать это:

var params = $state.params; 
params.id = 123; // Set new ID 
$state.go($state.current.name, params); 
+0

Но, как я уже сказал, я не знаю, что такое состояние и каковы другие параметры. – 24sharon

+0

Хорошо, отредактировал мой ответ. Надеюсь, я понял тебя правильно на этот раз. – iH8

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(); 
    }]);