Nathan Matthews'in çözümü benim için işe yaramadı, ancak tamamen doğru, ancak geçici bir çözüme ulaşmanın çok az anlamı var:
Kilit nokta şudur: $ state.go'daki tanımlı parametrelerin türü ve toParamas, durum geçişinin her iki tarafında aynı dizi veya nesne olmalıdır.
Örneğin, bir durumda bir parametreyi aşağıdaki gibi tanımladığınızda, "[]" kullanılması nedeniyle parametrelerin dizi olduğu anlamına gelir:
$stateProvider
.state('home', {
templateUrl: 'home',
controller: 'homeController'
})
.state('view', {
templateUrl: 'overview',
params: ['index', 'anotherKey'],
controller: 'overviewController'
})
Öyleyse, Params'a şu şekilde bir dizi olarak da geçmelisiniz:
params = { 'index': 123, 'anotherKey': 'This is a test' }
paramsArr = (val for key, val of params)
$state.go('view', paramsArr)
Ve bunlara $ stateParams aracılığıyla aşağıdaki gibi bir dizi olarak erişebilirsiniz:
app.controller('overviewController', function($scope, $stateParams) {
var index = $stateParams[0];
var anotherKey = $stateParams[1];
});
Daha iyi çözüm, her iki tarafta dizi yerine nesne kullanmaktır :
$stateProvider
.state('home', {
templateUrl: 'home',
controller: 'homeController'
})
.state('view', {
templateUrl: 'overview',
params: {'index': null, 'anotherKey': null},
controller: 'overviewController'
})
Params tanımında [] 'yı {} ile değiştirdim. ToParams'ı $ state.go'ya iletmek için ayrıca array yerine object kullanmalısınız:
$state.go('view', { 'index': 123, 'anotherKey': 'This is a test' })
daha sonra bunlara $ stateParams aracılığıyla kolayca erişebilirsiniz:
app.controller('overviewController', function($scope, $stateParams) {
var index = $stateParams.index;
var anotherKey = $stateParams.anotherKey;
});
params
diziye dahil edilmesi gerekir .