javascript - Angular $resource 自定义操作未定义

标签 javascript angularjs

问题

我正在尝试在我的 Controller 中使用服务的自定义操作,但该功能未定义。

我有这个工厂:

var apiUrl = 'http://localhost:9232/api/';
var managerControllers = angular.module('managerControllers', ['ngResource', 'ngRoute']);

managerControllers.factory('businessService', ['$resource', function($resource) {
    return $resource(apiUrl+'Business/:bussinessId',
        {businessId: '@id'},
        {
            getSimple: {method:'GET', url: apiUrl+'Business/simple', isArray: true}
        });
}]);

还有我的 Controller :

managerControllers.controller('ProfessionalController', ['$scope', '$routeParams', '$resource', 'professionalService', 'businessService',
    function($scope, $routeParams, $resource, professionalService, businessService) {
        $scope.params = $routeParams;
        if($routeParams.id)
            $scope.professionals = professionalService.query({businessId: $routeParams.id});
        $scope.newProfessional = new professionalService();
        $scope.businessOptions = businessService.getSimple();
        this.addProfessional = function(professional){
            professional.$save();
            $scope.newProfessional = new professionalService();
        };
    }])

businessServce.getSimple() 未定义。

在原始 Controller 的代码中,我没有将 $resource 作为依赖项传递。目标是仅使用该服务。 $resource 只是为了能够调试。一旦 getSimple 出现在 businessService 上,我将删除它

我试过...

...在调用上设置断点,getSimple() 函数不会出现。它确实是未定义的,虽然我不知道为什么。

然后在 chrome 的控制台上,我使用工厂内部的相同代码创建了一个新的 $resource,并且 getSimple 显示正常。

问题

我还需要做些什么来公开我使用 $resource 在 businessService 上声明的 getSimple 吗?

感谢您的帮助!

最佳答案

您的资源定义没问题 - 如果我单独使用它,businessService.getSimple 是一个函数(参见 http://jsbin.com/cafupu/1/edit?js,console,output)

在您的示例中使用了内联注释代码

['serviceA', function(serviceA){}]

有没有可能你只删除了一个注释,但没有删除函数参数?

同步注解定义和函数参数是常见问题,所以我更喜欢写简单的函数(在jsbin中使用)和https://github.com/olov/ng-annotate用于缩小前的自动注释。

关于javascript - Angular $resource 自定义操作未定义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28802157/

相关文章:

javascript - Html5 复杂形状和事件 - 推荐一种可维护和灵活代码的方法

angularjs - 无法从 ionic 中的 Controller 将 URL 传递给 View

javascript - nodejs 的 View 引擎 Handlebar 在 Hapijs 上的 Angular 代码

javascript - 管理 div 之间的空间(动态高度,向左浮动)

javascript - 如何覆盖扩展组件上的类名?

javascript - $event.stopPropagation 不起作用

angularjs - 自举下拉列表不适用于 Electron

javascript - $http.post (angularjs) 中的未定义函数 : . 成功

javascript - 对站点之间的 postMessage 感到困惑

javascript - 如何在 jQuery 每个循环中处理第 n 个元素?