
Passing Parameters to Controllers Using ui-sref in ui-router
In ui-router, using ui-sref to transition to a state allows for the passing of parameters to the controller. To clarify, you can send and receive two parameters, "foo" and "bar," to a target state.
State Definition
Update the state definition to accept parameters in the URL:
$stateProvider
.state('home', {
url: '/:foo?bar',
views: {
'': {
templateUrl: 'tpl.home.html',
controller: 'MainRootCtrl'
}
}
});Controller Consumption
Within the controller, retrieve the parameters from $stateParams:
.controller('MainRootCtrl', function($scope, $state, $stateParams) {
//..
var foo = $stateParams.foo; //getting fooVal
var bar = $stateParams.bar; //getting barVal
//..
})Link Generation
To pass the parameters, use this syntax:
<a ui-sref="home({foo: 'fooVal', bar: 'barVal'})">This will transition to the 'home' state with the specified foo and bar parameters, which can then be accessed in the controller via $stateParams.
Customizing Parameters (Optional)
With the "params" property in the state definition, you can further configure parameter behavior:
$stateProvider
.state('other', {
url: '/other/:foo?bar',
params: {
foo: {
value: 'defaultValue',
squash: false,
},
bar: {
array: true,
},
hiddenParam: 'YES',
// (not in URL)
}
});Parameter settings include:
Parameter Injection
Controller parameter injection is done via $stateParams. You can retrieve values with:
var paramValue = $stateParams.paramName;
This is how UI-router enables parameter passing between states using ui-sref for easy state transitions and parameter accessibility in the controller.
The above is the detailed content of How can I Pass Parameters to Controllers Using ui-sref in ui-router?. For more information, please follow other related articles on the PHP Chinese website!