3

似乎无法使此工厂正常工作。 我试图做一个工厂的$ http请求。 但我发现了这个错误:

类型错误:PassFactory.setNewPass不是一个函数

下面是代码:


PassFactory.setNewPass不是函数,工厂函数不是函数

(function() { 
     angular 
      .module("myApp") 
      .factory('PassFactory', ['$http', function ($http) { 
    /* 
       var passFactory = {}; 
       passFactory.setNewPass = function (newpass, user) { 
        return $http.post('/password/' + newpass, user, function (response) { 
        }); 
       }; 
    */ 
       return { 
        setNewPass: function (newpass, user) { 
         return $http.post('/password/' + newpass, user, function (response) { 
         }); 
        } 
       }; 
      }]) 
    })(); 



控制器

(function() { 
     angular 
      .module("myApp") 
      .controller('PCtrl', ['$scope', '$location', '$rootScope', 'PassFactory', setHome]); 

     function setHome($scope, $location, PassFactory) { 
      $scope.login = function (user) { 
       if (user.newpassword == user.newpasswordconfirm) { 


        PassFactory.setNewPass(user.newpassword, user).then(function (response) { 
         $location.path("/"); 
        }); 


       } 
      }; 
     } 
    })(); 

回答

1

您在控制器工厂功能中错过了$rootScope。始终确保依赖项中的顺序已被注入到DI数组中,按照相同的顺序,您应该在工厂函数内请求它们的实例。

angular 
.module("myApp") 
.controller('PCtrl', ['$scope', '$location', '$rootScope', 'PassFactory', setHome]); 

//added $rootScope in 3rd place 
function setHome($scope, $location, $rootScope, PassFactory) { 
+0

非常感谢!这解决了我的问题。 –