这是我的应用状态
.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);
});
答案 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();
}]);