vic*_*woo 19 angularjs angular-ui-router
我想通过$state.go()UI-Router 将自定义对象传递给另一个状态.
var obj = {
a: 1,
b: 2,
fun: function() {
console.log('fun');
}
}
$state.go('users', obj);
Run Code Online (Sandbox Code Playgroud)
但是我需要fun()在目标状态下运行,所以我不能在URL参数中传递这个对象.在目标控制器中,我试图获取objvia 的值,$stateParams但得到了空对象{}:
function UserCtrl($stateParams) {
console.log($stateParams); // will be empty
}
Run Code Online (Sandbox Code Playgroud)
那么如何obj正确地传递到状态"用户"呢?
小智 68
使用如下参数定义状态:
$stateProvider
.state('user', {
url: '/user',
params: {
obj: null
},
templateUrl: 'templates/user.html',
controller: 'UserCont'
})
Run Code Online (Sandbox Code Playgroud)
在调用pass参数时,如下所示:
$state.go('user',{obj: myobj});
Run Code Online (Sandbox Code Playgroud)
在控制器UserCon接收参数如:
$state.params.obj
Run Code Online (Sandbox Code Playgroud)
User $ state是控制器中定义的参数之一
function UserCon($scope, $http, $state){
Run Code Online (Sandbox Code Playgroud)
var obj = {
a: 1,
b: 2,
fun: function() {
console.log('fun');
}
}
$state.go('users', obj);
.....
$stateProvider
.state('user', {
url: '/user/:obj',
templateUrl: 'templates/user.html',
controller: 'UserCont'
})
..... or .....
$stateProvider
.state('user', {
url: '/user',
params: {
obj: null
},
templateUrl: 'templates/user.html',
controller: 'UserCont'
})
.....
function UserCtrl($state) {
console.log($state.params.obj);
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
43308 次 |
| 最近记录: |