Angularjs $stateProvider参数为null,带有

Angularjs $stateProvider参数为null,带有,angularjs,ionic,Angularjs,Ionic,我无法在Ionic中检索从ui路由器传递的参数。 传入控制器的参数未定义 这是我的州代码: .state('app.dayliston', { cache: false, url: '/myurl', views: { 'mainContent': { templateUrl: 'calendar/daylist.html', controller: 'MyCtrl',

我无法在Ionic中检索从ui路由器传递的参数。 传入控制器的参数未定义 这是我的州代码:

.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'});