0

将 $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();
        }
    }
4

1 回答 1

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,这就是你得到那个错误的原因。
如果您在没有这些参数的情况下声明函数,因为它们没有在函数中设置,它将在父范围(控制器范围)中查找它们,然后找到它们。

于 2013-09-01T14:32:44.847 回答