【问题标题】:AngularJS TypeError: $resource is not a functionAngularJS TypeError:$resource 不是函数
【发布时间】:2016-06-27 03:42:27
【问题描述】:

我有以下控制器,它以

的形式给我带来麻烦

TypeError: $resource 不是函数

指向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);

在我的activity.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);
    });
});

...

【问题讨论】:

    标签: javascript angularjs node.js express


    【解决方案1】:

    问题似乎与注射顺序有关

    app.controller('AddActivityCtrl',['$scope','$resource','$location','$rootScope',
        function($scope, $rootScope, $resource, $location){
    

    您将$resource 作为第二个服务注入,但将$rootScope 作为第二个参数传递。

    注入顺序和参数必须匹配

    ['$scope','$resource','$location','$rootScope',
            function($scope, $resource, $location, $rootScope){..}
    

    【讨论】:

    • 我不知道这个。所有参数都是这样吗?
    • 这是我从docs.angularjs.org/guide/di读到的,当使用这种类型的注解时,注意保持注解数组与函数声明中的参数同步。
    猜你喜欢
    • 2014-05-21
    • 2017-06-25
    • 2018-09-05
    • 2017-05-17
    • 2023-04-01
    • 2019-12-04
    • 2012-10-23
    • 2016-07-12
    • 2015-11-23
    相关资源
    最近更新 更多