AngularJS undefined不是一个函数

时间:2013-04-29 05:36:21

标签: javascript http angularjs

我正在使用Angularjs尝试一个简单的http应用程序。 我的代码是

var studentApp = angular.module('studentApp',['ui.bootstrap']);
studentApp.factory('studentSession', function($http){
    return {
        getSessions: function() {
            return $http.post('/services', { 
                type : 'getSource',
                ID    : 'TP001'
            });
        }
    }
});

studentApp.controller('studentMenu',function($scope, studentSession){
    studentSession.getSessions().success($scope.handleSuccess);
    $scope.handleSuccess = function(data, status) {
        console.log(data);
    };
});

尝试运行上面的代码时,我在chrome中收到错误Undefined is not a function。通过stackoverflow搜索建议的修复是为功能提供范围。在确定函数范围后,错误仍然存​​在。

可疑角度文件损坏的问题,因为如果我在控制器中移动getSession代码,代码工作正常。但错误仍存在于角度版本1.0.6和1.1.4(未压缩和缩小版本)上。

Firefox中的错误有所不同。其fn is not a function具有未压缩的angularjs,b is not a function具有缩小的angularjs。

有关如何解决此问题的任何建议?

1 个答案:

答案 0 :(得分:1)

Oki所以基于以下代码的评论

var studentApp = angular.module('studentApp',['ui.bootstrap']);
studentApp.factory('studentSession', function($http){
    return {
        getSessions: function() {
            return $http.post('/services', { 
                type : 'getSource',
                ID    : 'TP001'
            });
        }
    }
});

studentApp.controller('studentMenu',function($scope, studentSession){
    //------Code Change---------
    //Moved before function call.
    $scope.handleSuccess = function(data, status) {
        console.log(data);
    }; 
    studentSession.getSessions().success($scope.handleSuccess);
});