angularjs - AngularJS 中的 "defer undefined"

标签 angularjs angularjs-scope

.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 变为空。

阅读更多相关信息:https://stackoverflow.com/a/35336414/2405040

关于angularjs - AngularJS 中的 "defer undefined",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35554897/

相关文章:

javascript - AngularJS 使用路由参数进行客户端包含的方法是什么?

javascript - AngularJS:错误:简单脚本中的 $injector:unpr

javascript - 带有动态命名 View 的 ui-router ng-repeat

javascript - AngularJS $scope 和 Controller 作为语法真的没有区别吗?

javascript - 根据真值删除 AngularJS 数组中的多个项目

angularjs - Angular 条件 promise

javascript - 表内按钮的 ZeroClipboard/ng-clip 悬停状态问题

javascript - 如何设置第一个 Controller 数据另一个 Controller

angularjs - deferred.resolve 给出错误 TypeError : undefined is not a function

javascript - Angular JS,异步回调中的范围更新