将$ 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();
}
}
答案 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作用域)中查找它们,然后找到它们。