我有以下控制器,它以以下形式给我带来麻烦
TypeError:$resource不是函数
指向 var Activities = $resource('/api/activities');
var Activities = $resource('/api/activities');
app.controller('AddActivityCtrl',['$scope','$resource','$location','$rootScope', function($scope, $rootScope, $resource, $location){ console.log($scope.user.email); //$scope.activity.user = $rootScope.user.email; $scope.save = function(){ var Activities = $resource('/api/activities'); $scope.activity.events = []; Activities.save($scope.activity, function(){ $location.path('/') }) } } ]);
它以前工作得很好,但我刚刚测试了这个功能,而自从上次测试以来,我所做的一些事情似乎已经破坏了它。这可能是什么原因?
以下来自app.js
var activities = require('./routes/activities'); app.use('/api/activities', activities);
在我的活动中。js我有
//API point for listing all existing activities router.get('/', function(req, res){ var collection = db.get('Activity'); //collection.find({}, function(err, activities){ collection.find({user:req.user.email}, function(err, activities){ if (err) throw err; res.json(activities); }); }); ...
问题似乎与注射顺序有关
app.controller('AddActivityCtrl',['$scope','$resource','$location','$rootScope', function($scope, $rootScope, $resource, $location){
你正在注射 $resource 作为第二次发球但传球 $rootScope 作为第二个参数。
$resource
$rootScope
注入顺序和参数必须匹配
['$scope','$resource','$location','$rootScope', function($scope, $resource, $location, $rootScope){..}