Angularjs ui-router add parent url parameter to current state
Angularjs ui-router add parent url parameter to current state
这是我的应用状态
.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 参数与所有其他存在的参数一起添加到当前页面
只需更改根 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);
});
您可以将选项传递给 $state
的 go
方法:
$state.go(to [, toParams] [, options])
https://github.com/angular-ui/ui-router/wiki/Quick-Reference#stategoto--toparams--options
$state.go('myState', {'myParam': myValue});
并且可以在ui-sref
上设置参数:
ui-sref='stateName({param: value, param: value})'
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);
如果我对你的理解正确的话,你试图在 $stateProvider 中设置状态数据后对其进行操作。如果是这样,您应该设置自己的状态提供程序,例如 Mean.io do
// $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();
}]);
谢谢
解决方法很简单
$state.go('.', {site_id: e.val})
保留所有其他参数并设置新参数
这是我的应用状态
.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 参数与所有其他存在的参数一起添加到当前页面
只需更改根 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);
});
您可以将选项传递给 $state
的 go
方法:
$state.go(to [, toParams] [, options])
https://github.com/angular-ui/ui-router/wiki/Quick-Reference#stategoto--toparams--options
$state.go('myState', {'myParam': myValue});
并且可以在ui-sref
上设置参数:
ui-sref='stateName({param: value, param: value})'
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);
如果我对你的理解正确的话,你试图在 $stateProvider 中设置状态数据后对其进行操作。如果是这样,您应该设置自己的状态提供程序,例如 Mean.io do
// $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();
}]);
谢谢
解决方法很简单
$state.go('.', {site_id: e.val})
保留所有其他参数并设置新参数