.controller('LoginConnect', ['$scope', 'connecting',
function($scope, connecting){
$scope.user = {};
$scope.connect = function($scope, $q){
connecting();
};
}
])
.factory("connecting", [ function($scope,$q, $http){
var deferred = $q.defer();
$http({
method: 'POST',
url: "http://api.tiime-ae.fr/0.1/request/login.php",
headers: {'Content-Type': 'application/x-www-form-urlencoded'},
transformRequest: function(obj) {
var str = [];
for(var p in obj)
str.push(encodeURIComponent(p) + "=" + encodeURIComponent(obj[p]));
return str.join("&");
},
data: {login: $scope.user.login, password: $scope.user.password}
})
.success(function(result){
deferred.resolve(result);
var promise = deferred.promise;
promise.then(function(result){
jsonTab = angular.fromJson(result);
$scope.result = result["data"];
$scope.user.token = result["data"];
});
})
}
])
嗨,我是 Angular JS 的新手,我遇到以下错误:TypeError: Cannot read property 'defer' of undefined
。
我们如何解决这个问题?
最佳答案
您为您的connecting
工厂编写了错误的语法。将其更改为:
.factory("connecting", ["$scope", "$q", "$http", function($scope,$q, $http){
您正在使用 inline array annotation用于注入(inject) Angular 依赖项的语法,因此您需要在上面的列表中指定确切的名称:"$scope"、"$q"、"$http"
。由于您没有在那里定义任何名称,因此变量 $q
变为空。
关于angularjs - AngularJS 中的 "defer undefined",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35554897/