Solusi Nathan Matthews tidak berhasil untuk saya, tetapi sepenuhnya benar tetapi ada sedikit gunanya mencapai solusi:
Poin utamanya adalah: Jenis parameter yang ditentukan dan toParamas dari $ state.go harus berupa larik atau objek yang sama di kedua sisi transisi status.
Misalnya ketika Anda mendefinisikan params dalam keadaan sebagai berikut, Anda berarti params adalah larik karena menggunakan "[]":
$stateProvider
.state('home', {
templateUrl: 'home',
controller: 'homeController'
})
.state('view', {
templateUrl: 'overview',
params: ['index', 'anotherKey'],
controller: 'overviewController'
})
Jadi Anda juga harus meneruskan toParams sebagai array seperti ini:
params = { 'index': 123, 'anotherKey': 'This is a test' }
paramsArr = (val for key, val of params)
$state.go('view', paramsArr)
Dan Anda dapat mengaksesnya melalui $ stateParams sebagai array seperti ini:
app.controller('overviewController', function($scope, $stateParams) {
var index = $stateParams[0];
var anotherKey = $stateParams[1];
});
Solusi yang lebih baik adalah menggunakan objek daripada array di kedua sisi :
$stateProvider
.state('home', {
templateUrl: 'home',
controller: 'homeController'
})
.state('view', {
templateUrl: 'overview',
params: {'index': null, 'anotherKey': null},
controller: 'overviewController'
})
Saya mengganti [] dengan {} dalam definisi params. Untuk meneruskan toParams ke $ state.go juga Anda harus menggunakan objek daripada array:
$state.go('view', { 'index': 123, 'anotherKey': 'This is a test' })
maka Anda dapat mengaksesnya melalui $ stateParams dengan mudah:
app.controller('overviewController', function($scope, $stateParams) {
var index = $stateParams.index;
var anotherKey = $stateParams.anotherKey;
});
params
larik.