$ stateProvider params null with ionic

时间:2015-10-06 13:51:58

标签: angularjs ionic

我无法检索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。我的代码有什么问题吗?

3 个答案:

答案 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>