通过state.go

时间:2017-01-15 21:10:12

标签: javascript jquery angularjs

我无法通过uid进入$state.go功能。

这是我的控制器:



.controller('chatCtrl', function($scope,$http,$ionicPopup,$state,$ionicHistory,$stateParams) {

    $scope.data = {};
    $scope.session_id= sessionStorage.getItem('session_id');
    var sid = $scope.session_id;
    if($scope.session_id == null){
        $state.go('login');
    }
    else {
        var cload = 'https://m.socialnetwk.com/home/app/chat_load.php';
        $http.post(cload, {id : $scope.session_id}).then(function (res){
            $scope.chat = res.data;
        });
        $scope.chat = {};
        $scope.openModal = function(id) {
            $scope.selectedId = id;
            $state.go('chat2',{uid: $scope.selectedId});

        }
    }
})


.controller('chat2Ctrl', function($scope,$http,$ionicPopup,$state,$ionicHistory,$stateParams) {

    $scope.data = {};
    $scope.id = {};

    $scope.session_id= sessionStorage.getItem('session_id');
    var sid = $scope.session_id;
    if($scope.session_id == null){
        $state.go('login');
    }
    else {
        var pmloaddd = 'https://m.socialnetwk.com/home/app/upml.php';
        $http.post(pmloaddd, {id : $state.params.uid}).then(function (res){
            $scope.pmload = res.data;
        });


     

    }
    
})




这是我的app.js:



$stateProvider
.state('chat2', {
   url: '/page9',
   params: {
     uid: null
   },
   templateUrl: 'templates/chat2.html',
   controller: 'chat2Ctrl'
})




2 个答案:

答案 0 :(得分:0)

有两个错误

  1. 未将参数添加到州配置的网址属性
  2. 并且$ state.params.uid无效。
  3. 使用以下解决方案。

    你的app.js

    $stateProvider
    .state('chat2', {
       url: '/page9/:uid',             //added the parameter here
       params: {
         uid: null
       },
       templateUrl: 'templates/chat2.html',
       controller: 'chat2Ctrl'
    })
    

    Chat2控制器的其他部分应如下所示

    if($scope.session_id == null){
            $state.go('login');
        }
        else {
            var pmloaddd = 'https://m.socialnetwk.com/home/app/upml.php';
            // modified the below line
            $http.post(pmloaddd, {id : $stateParams.uid}).then(function (res){
                $scope.pmload = res.data;
            });
    

    <强> LIVE DEMO

答案 1 :(得分:0)

首先,您需要使用url传递它,然后您可以像 -

一样访问它
  

$ stateParams。

$stateProvider
 .state('chat2', {
   url: '/page9/:uid',
     controller:'name of yout controller',
     controller: function($stateParams){
     $stateParams.uid  //*** Exists! ***//
     }
      });

然后您可以这样访问: -

  

控制器上的$ stateparams.uid。

您也可以参考此链接 - Url routing--stateParams Service