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

非常感謝!這解決了我的問題。 –