Nathan Matthews의 솔루션은 저에게 효과가 없었지만 완전히 정확하지만 해결 방법에 도달 할 이유가 거의 없습니다.
요점은 : 정의 된 매개 변수의 유형과 $ state.go의 toParamas는 상태 전환의 양쪽에서 동일한 배열 또는 객체 여야합니다.
예를 들어 다음과 같이 상태에서 매개 변수를 정의하면 "[]"를 사용하기 때문에 매개 변수가 배열임을 의미합니다.
$stateProvider
.state('home', {
templateUrl: 'home',
controller: 'homeController'
})
.state('view', {
templateUrl: 'overview',
params: ['index', 'anotherKey'],
controller: 'overviewController'
})
따라서 다음과 같이 toParams를 배열로 전달해야합니다.
params = { 'index': 123, 'anotherKey': 'This is a test' }
paramsArr = (val for key, val of params)
$state.go('view', paramsArr)
그리고 $ stateParams를 통해 다음과 같은 배열로 액세스 할 수 있습니다.
app.controller('overviewController', function($scope, $stateParams) {
var index = $stateParams[0];
var anotherKey = $stateParams[1];
});
더 나은 솔루션은 양쪽에서 배열 대신 객체를 사용하는 것입니다 .
$stateProvider
.state('home', {
templateUrl: 'home',
controller: 'homeController'
})
.state('view', {
templateUrl: 'overview',
params: {'index': null, 'anotherKey': null},
controller: 'overviewController'
})
params 정의에서 []를 {}로 대체했습니다. toParams를 $ state.go에 전달하려면 배열 대신 객체를 사용해야합니다.
$state.go('view', { 'index': 123, 'anotherKey': 'This is a test' })
그러면 $ stateParams를 통해 쉽게 액세스 할 수 있습니다.
app.controller('overviewController', function($scope, $stateParams) {
var index = $stateParams.index;
var anotherKey = $stateParams.anotherKey;
});
params
배열에 포함되어야합니다 .