回调不是一个函数,angularJS

时间:2015-08-07 14:56:20

标签: angularjs http callback get

getStuff: function(stuff, callback) {

            $http({
                method: 'GET',
                url: url + "/" + stuff
                cache: true
            }).success(function(data) {
                console.log(data);
                callback(data);
            });

        },

我有上面的代码。我在我的应用程序中多次使用它,但是当我调用这个时,我给予回调不是一个函数。 console.log(数据);然而,返回适当的对象。任何人都知道为什么?

由于

2 个答案:

答案 0 :(得分:0)

看一下你调用getStuff的行(stuff,callback)。我的猜测是第二个“回调”参数实际上不是一个函数。经过多年的挫折与沮丧的错误,我已经了解到,如果有疑问,错误信息是100%准确。

答案 1 :(得分:0)

确保 getStuff 功能的第二个参数是功能。但是,您应该使用promise来处理 $ http 请求。根据定义, $ http 返回承诺,并使用 $ q.defer()承诺管理器。使用promise和$ q是一种很好的做法。

<强>服务

(function(){

  function Service($http, $q){

    function get(){
      //Use $q.defer() promise manager
      var defer = $q.defer();
      //Create a defer promise
      var promise = defer.promise;

      $http.get('path_to_url').then(function(response){
        //resolve our data
        defer.resolve(response.data);
      });

      //return the promise
      return promise;

    }

    var factory = {
      get: get
    };

    return factory;

  }

  angular
    .module('app')
    .factory('Service', Service);

})();

<强>控制器

(function(){

function Controller($scope, Service, $q) {

  Service.get().then(function(data){

    //Here your resolve data
    console.log(data);
  })

}

angular
.module('app', [])
.controller('ctrl', Controller);

})();