Controller函数中的$ resource

时间:2013-09-01 14:23:40

标签: angularjs

将$ resource请求放在Controller函数中时出现问题。它直接来自控制器,但不在函数内部。

也许有人知道为什么?谢谢!

angular.module('Vote', ['ngResource']);
    function VotesController($scope, $resource) {
        $scope.simple = $resource('url'); // works
        $scope.some_item = $scope.simple.get();
        $scope.upvoteQuestion = function($scope, $resource) {
            $scope.simple = $resource('url'); // gets error: undefined
            $scope.some_item = $scope.simple.get();
        }
    }

1 个答案:

答案 0 :(得分:1)

定义函数upvoteQuestion的方式意味着它需要2个参数($scope$resource)。你需要删除它:

angular.module('Vote', ['ngResource']);
    function VotesController($scope, $resource) {
        $scope.simple = $resource('url'); // works
        $scope.some_item = $scope.simple.get();
        $scope.upvoteQuestion = function() {
            $scope.simple = $resource('url'); // gets error: undefined
            $scope.some_item = $scope.simple.get();
        };
    }

这是一个范围问题 如果您使用这些参数定义函数但在调用函数时实际上没有给出它们,那么它们将被设置为undefined,这就是您得到该错误的原因。 如果声明没有这些参数的函数,因为它们没有在函数中设置,它将在父作用域(Controller作用域)中查找它们,然后找到它们。