AngularjS:使用$ state.go()

时间:2016-04-29 15:38:02

标签: javascript angularjs

我试图通过$ state.go()将对象传递给控制器​​。

app.js:

.state('class', {
    url: '/class/:programId',

   views: {                        
        'content@': {
            templateUrl: 'class.html',
            controller: 'ClassController'
        },
        data: {
            requireLogin: true
        }
    }
}).state('classLevel', {
    url: '/classLevel',
   views: {

        'content@': {
            templateUrl: 'partials/classLevel.html',                            
            controller: 'ClassLevelController',
            params: { obj: null }

        },
        data: {
            requireLogin: true
        }
    }
})

控制器:

controllers.controller('ClassController', ['$scope', '$state', '$rootScope', '$stateParams', 'myService',
function($scope, $state, $rootScope, $stateParams) {

   var myClass = myService.getList(url here);
      myClass.then(function (data) {
            // getting data here
      });


   $scope.loadClassLevel = function(summaryId, sessionId){
    var CurrentDate = moment().unix();
    var yourObj = {};
    yourObj.currentTime = CurrentDate;
    yourObj.summaryId = summaryId;
    yourObj.sessionId = sessionId;
    $state.go('patientFeelingLevel',{obj:yourObj});             
  }

});


controllers.controller('ClassLevelController', ['$scope', '$state', '$rootScope', '$stateParams',
        function($scope, $state, $rootScope, $stateParams) {
            console.log("$state :",$state);
});

我正在尝试将对象从 ClassController 传递到 ClassLevelController 。但是在console.log中我得到了

params: Object
       obj: null

帮助我如何将该对象传递给下一个控制器( ClassLevelController 此处)。

1 个答案:

答案 0 :(得分:1)

您不应使用$state来访问您传递的参数,而是使用$stateParams服务。

试试这个:

console.log("$stateParams :",$stateParams);

那是因为你的状态对象将始终与应用程序的开头相同。

Here是一个示例,表明$stateParams正在发生变化,但$state不是。