नाथन मैथ्यू का समाधान मेरे लिए काम नहीं करता था, लेकिन यह पूरी तरह से सही है, लेकिन वर्कअराउंड तक पहुंचने के लिए बहुत कम बिंदु हैं:
मुख्य बिंदु यह है: राज्य के संक्रमण के दोनों किनारों पर परिभाषित पैरामीटर और $ 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)
और आप इस तरह से सरणी के रूप में $ राज्यप्रेम के माध्यम से उन्हें एक्सेस कर सकते हैं:
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' })
तब आप उन्हें $ राज्यप्रेम के माध्यम से आसानी से एक्सेस कर सकते हैं:
app.controller('overviewController', function($scope, $stateParams) {
var index = $stateParams.index;
var anotherKey = $stateParams.anotherKey;
});
params
सरणी में शामिल करने की आवश्यकता है।