AngularJS error: TypeError: v2.login is not a function

前端 未结 8 926
暖寄归人
暖寄归人 2021-01-17 07:49

I would like to call the login function when I click the login button but keep getting the error message in the title. Can someone point out the error in my script?

相关标签:
8条回答
  • 2021-01-17 08:27

    Edge case here, but I want to mention it for posterities' sake. I got this same error when using the controllerAs pattern with a form name with the same value as ng-submit. For example:

    <form name="authCtrl.signUp" ng-submit="authCtrl.signUp()">

    Throws: TypeError: v2.signUp is not a function

    The solution was to change the name of the form to something different:

    <form name="authCtrl.signUpForm" ng-submit="authCtrl.signUp()">

    0 讨论(0)
  • 2021-01-17 08:32

    This may not be specific to your problem, but I was also getting this error and it took a bit to figure out why.

    I had named both a function and a variable the same, with the variable assigned in the function, and so the assignment of the variable was overriding the function and it was exploding on a second run.

    You'll notice in the example the uploadFile() function as an upload.uploadFile = true; This was a wonderful file that was meant to be upload.uploadingFile - a flag used to control the behavior of a spinner. Once that was fixed, the issue went away.

    Example:

    (function()
    {
      'use strict';
    
      angular.module('aumApp.file-upload')
      .controller('FileUploadCtrl', FileUploadCtrl);
    
      function FileUploadCtrl($scope, $http)
      {
        upload.uploadFile = function()
        {
          upload.uploadFile = true;
          var backendUrl = '/ua_aumcore/events/api/v1/events/uploadFile';
          var fd = new FormData();
          fd.append('file', upload.src);
          $http({ url: backendUrl, data: fd, method: 'POST', transformRequest : angular.identity, headers: { 'Content-Type' : undefined } })
          .then(function uploadSuccess(response)
          {
            upload.data = response.data;
            upload.message = "Uploaded Succesfully.";
            upload.uploadSuccess = true;
            upload.uploadingFile = false;
          },
          function uploadFailure(response)
          {
            upload.message = "Upload Failed.";
            upload.uploadSuccess = false;
            upload.uploadingFile = false;
          });
        };
      }
      FileUploadCtrl.$inject = ['$scope', '$http'];
    })();
    
    0 讨论(0)
提交回复
热议问题