2

我正在使用 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);
    };
});

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

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

错误在 Firefox 中有所不同。它fn is not a function带有未压缩的 angularjs 和b is not a function缩小的 angularjs。

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

4

1 回答 1

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);
});
于 2013-04-29T07:54:25.240 回答