【问题标题】:TypeError: Cannot read property 'go' of undefinedTypeError:无法读取未定义的属性“go”
【发布时间】:2016-06-15 08:29:21
【问题描述】:
//controller pour connection to API
.controller('LoginConnect', ['$scope','connecting','sendtoken','$state',
function($scope,connecting,sendtoken,$state){

  var token = [];
    $scope.user = {};
    var users = $scope.user;
    var cgtpage = false;

    $scope.connect = function (users,token,$state) {
      var log = $scope.user.login;
      var pass = $scope.user.password;
      var mydata = {};
      connecting.login(log,pass).then(function(result){
        var montoken = result.data.token;
         sessionStorage.setItem('token',montoken);
         console.log(montoken);
      });


      var mytoken = sessionStorage.getItem('token');

       sendtoken.send(mytoken).then(function(userdata){
            //email

            var email = userdata.data.login;
            sessionStorage.setItem('useremail',email);
            //prestation de services
            //vente de marchandises
            //période déclaration
            var declar_period = userdata.data.declaration_period;
            sessionStorage.setItem('userdeclar_period',declar_period);
            //Bénéficiaire ACCRE
            var accre = userdata.data.has_accre;
            sessionStorage.setItem('useraccre',accre);
            //Prénom
            var name = userdata.data.entrepreneur_firstname;
            sessionStorage.setItem('username',name);
            //Nom
            var lastname = userdata.data.entrepreneur_lastname;
            sessionStorage.setItem('userlastname',lastname);
            //Nom commercial
            var commercial_name = userdata.data.company_name;
            sessionStorage.setItem('userlcommercial',commercial_name);
            //siret
            var siret = userdata.data.company_siret;
            sessionStorage.setItem('usersiret',siret);
            //Date de création
            var creation = userdata.data.activity_start;
            sessionStorage.setItem('usercreation',creation);
            //Adresse
            var adresse = userdata.data.company_address;
            sessionStorage.setItem('useraddress',adresse);
            //code postal
            var cp = userdata.data.company_zipcode;
            sessionStorage.setItem('usercp',cp);
            //Ville
            var city = userdata.data.company_city;
            sessionStorage.setItem('usercity',city);
            //Pays
            var country = userdata.data.company_country;
            sessionStorage.setItem('usercountry',country);
            //télephone
            var phone = userdata.data.company_phone;
            sessionStorage.setItem('userphone',phone);

            if (name != null){
              cgtpage = true;
            };
            console.log(cgtpage);

            if(cgtpage === true){
              $state.go('app.home');
          };
       });
    };
  }
])

嗨,我没有成功更改页面,它总是说 TypeError: Cannot read property 'go' of undefined 我想是因为我的函数中没有 $state 并且我无法成功。你有什么想法我可以管理它吗?

【问题讨论】:

  • 您在其他控制器中看到$state 吗?你加载$stateProvider了吗?
  • 不,我应该没有在我的工厂加载 $state 吗?
  • 无论如何你在控制器中加载$state 所以你不需要传递$state 作为参数,它是这个控制器的全局参数
  • @MaximShoustin 该问题与connect 函数有关,该函数有不需要的$state 参数
  • 此外,if 语句不需要分号:if (cgtpage === true) { $state.go('app.home'); }(末尾没有分号)

标签: javascript angularjs ionic-framework angularjs-scope angular-ui-router


【解决方案1】:

connect函数中删除$state参数,这是在杀死LoginConnect控制器工厂函数中注入的$state参数的存在。

$scope.connect = function (users,token) //<--removed $state

【讨论】:

  • @GuillaumeNouhaud 很高兴为您提供帮助.. 谢谢 :-)
  • 谢谢,谢谢@PankajParkar!我有一个刷新功能,但我不明白为什么它不起作用。意识到我在成功回调中错误地包含了 $state。再次感谢!
  • @loulala 很高兴知道它也对您有所帮助。谢谢:-)
猜你喜欢
  • 2016-11-20
  • 1970-01-01
  • 2020-11-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-12-24
  • 2019-08-19
相关资源
最近更新 更多