【问题标题】:Angular missing method [closed]角度缺失方法[关闭]
【发布时间】:2014-01-10 11:34:28
【问题描述】:

我目前正在构建一个有 C# 后端的 Angular 应用程序,该后端公开服务。我想使用 angularjs 资源来访问这些服务。在控制器中我调用资源时出现以下错误:

TypeError: Object function g(b){z(b||{},this)} has no method 'getCourse'
    at new <anonymous> (http://127.0.0.1:81/ClientApp/controllers/CourseIndex.js:6:36)
    at d (http://127.0.0.1:81/Scripts/angular/angular.min.js:30:352)
    at Object.instantiate (http://127.0.0.1:81/Scripts/angular/angular.min.js:30:482)
    at http://127.0.0.1:81/Scripts/angular/angular.min.js:59:495
    at http://127.0.0.1:81/Scripts/angular/angular.min.js:47:450
    at p (http://127.0.0.1:81/Scripts/angular/angular.min.js:7:367)
    at U (http://127.0.0.1:81/Scripts/angular/angular.min.js:47:342)
    at k (http://127.0.0.1:81/Scripts/angular/angular.min.js:42:309)
    at k (http://127.0.0.1:81/Scripts/angular/angular.min.js:42:326)
    at http://127.0.0.1:81/Scripts/angular/angular.min.js:41:371 

这是我的控制器:

coursewareApp.controller('CourseIndex', function ($scope, $location, Courses) {
    $scope.courseOutline = Courses.getCourse(); //Error in this line
    $scope.courseOutline.then(
        function(course) {
            $scope.courseOutline = fixFormat(course);
        },
        function(response) {
            console.log(response);
        });

这是我的服务:

coursewareApp.factory('Courses', function ($resource, $q) {
    var resource = $resource('/api/Block', {},
                    {
                        getCourse: {
                            method: 'GET',
                            headers: { 'Authorization-Token': '6A594741380806DF128E28BDCC072859A1ECF0DC24478DDD890CC191C8357AFF12F837F657104E285BE8E2151F8631D148DEF89420024EDAA71DDB8404A1C1947ABD2BBE8002952DC891246CADCB1D452F445E773AB0CE8B4B9CF566A738ED7736AFC66B61FBFDCD59EDD68D2F8F4D5FF31DA0DD8F0CA98C10CA07F18C1C386462D0D2694385DA38C9F6C2A04B15B885AEBDF917E155014942040272E0F36B2D4E39303CBC430738902CF75093EAD11492AA87A9' },
                            url: '/api/Block/Courses',
                        }
                    });
    return {
        getCourse: function () {
            var deferred = $q.defer();
            resource.getCourse(
                function(event) {
                    deferred.resolve(event);
                },
                function(response) {
                    deferred.reject(response);
                });
            return deferred.promise;
        }
    };
});

我已经阅读了许多类似问题的解决方案,但似乎没有一个适用于此。

提前致谢。

【问题讨论】:

  • 似乎对我有用。你能检查一下这个小提琴,看看有没有什么不同:jsfiddle.net/N4zJv/1
  • 看起来除了mock外都一样..
  • 你的脚本 CourseIndex.js 被缩小了吗?
  • 不,它在 Visual Studio 的调试中运行。

标签: javascript angularjs angularjs-resource


【解决方案1】:

这似乎是一个缩小问题尝试以缩小友好的方式声明您的控制器\服务

coursewareApp.controller('CourseIndex', ['$scope', '$location', 'Courses',function ($scope, $location, Courses) {
}]);


coursewareApp.factory('Courses', ['$resource','$q',function ($resource, $q) {

}]);

【讨论】:

  • 非常感谢,但不幸的是这不是问题所在。更新了声明,但仍然出现相同的错误。
猜你喜欢
  • 2021-10-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-10-31
  • 2020-04-23
  • 1970-01-01
  • 2017-10-13
相关资源
最近更新 更多