我无法检索Ionic中ui-router传递的参数。 传递给Controller的参数未定义 这是我的州代码:
.state('app.dayliston', {
cache: false,
url: '/myurl',
views: {
'mainContent': {
templateUrl: 'calendar/daylist.html',
controller: 'MyCtrl',
params : { 'mode':'online'}
}
}
})
这是我的控制器代码:
.controller('MyCtrl', function($scope,$state, $stateParams,CalendarFactory,FBFactory, $ionicHistory,$ionicScrollDelegate,$ionicModal,$ionicPopup, $timeout) {
console.log('MyCtrl')
console.log('mode'+$stateParams.mode) // mode is undefined
....
})
我使用的是1.6.1。我的代码有什么问题吗?
答案 0 :(得分:1)
正如我在你的代码中看到的,你不需要使用$ stateParams,因为你没有从URL获得“mode”参数。
我认为状态中附加的data
将是更好的选择(Docs):
.state('app.dayliston', {
cache: false,
url: '/myurl',
data:{
mode: 'online'
},
views: {
'mainContent': {
templateUrl: 'calendar/daylist.html',
controller: 'MyCtrl'
}
}
})
然后你可以得到以这样的状态存储的数据:
.controller('MyCtrl', function($scope, $state, $stateParams, CalendarFactory, FBFactory, $ionicHistory, $ionicScrollDelegate, $ionicModal, $ionicPopup, $timeout) {
console.log('MyCtrl')
console.log('mode'+$state.current.data.mode) // "online"
})
答案 1 :(得分:0)
MyCtrl是控制器的实际名称。它本身并不是传递给控制器的参数。
答案 2 :(得分:0)
路线:
get 'stores/new' => 'stores#new'
post 'stores/new' => 'stores#create'
Check URL Routing Query Parameters doc
来自视图的链接:
.state('app.dayliston', {
cache: false,
url: '/myurl/:mode',
views: {
'mainContent': {
templateUrl: 'calendar/daylist.html',
controller: 'MyCtrl'
}
}
})
从控制器转到州/路线:
<a ui-sref="app.dayliston({mode: 'online'});">Go to dayliston</a>