Angularjs $stateProvider参数为null,带有
我无法在Ionic中检索从ui路由器传递的参数。 传入控制器的参数未定义 这是我的州代码:Angularjs $stateProvider参数为null,带有,angularjs,ionic,Angularjs,Ionic,我无法在Ionic中检索从ui路由器传递的参数。 传入控制器的参数未定义 这是我的州代码: .state('app.dayliston', { cache: false, url: '/myurl', views: { 'mainContent': { templateUrl: 'calendar/daylist.html', controller: 'MyCtrl',
.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。我的代码有什么问题吗?MyCtrl是控制器的实际名称。它不是传递给控制器本身的参数 正如我在代码中看到的,您不需要使用$stateParams,因为您不需要从URL获取“mode”参数 我认为状态中附加的
数据将是一个更好的选择():
然后您可以获得存储在如下状态的数据:
.controller('MyCtrl', function($scope, $state, $stateParams, CalendarFactory, FBFactory, $ionicHistory, $ionicScrollDelegate, $ionicModal, $ionicPopup, $timeout) {
console.log('MyCtrl')
console.log('mode'+$state.current.data.mode) // "online"
})
您错误地传递了$stateParams
应该在url上,或者您可以使用状态上的resolve
映射传入数据
另外,传递自定义数据可能是更好的方法?很难从您提供的代码示例中看出路线:
.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>
是的,它是真实的名字。console.log('MyCtrl')只是屏幕上的一个打印,其中为$stateparms定义/设置了.mode?$stateParams对象存在(因此它被正确注入),但是mode属性不存在。但是我应该将mode属性放在哪里?我认为这样在params中传递就足够了:params:{'mode':'online'}我对应用程序的结构了解不够,但是这些引用在控制器的构造函数中。看起来这可能只是一个执行顺序问题。您是否在配置路由之前为控制器加载js?不,顺序很好。控制器是最后加载的。你把我带到了正确的方向。我只需将数据移出视图
<a ui-sref="app.dayliston({mode: 'online'});">Go to dayliston</a>
$state.go('app.dayliston', {mode: 'online'});