无法访问控制器中的函数内注入的AngularJS服务

时间:2012-09-25 02:42:33

标签: javascript javascript-framework angularjs

无法访问$ scope和food内部的destroy函数。

foodProject.controller('FoodsCtrl', function($scope, Food) {

    $scope.foods = Food.index();
    $scope.destroy = function(food){
        debugger;
        console.log(Food, $scope);
        food.$destroy();
    };
});

本地范围变量仅为

食物:资源

这:$ get.e. $ new.a

我找不到$ scope和Food

http://jsfiddle.net/fW2EA/1/ http://jsfiddle.net/wizztjh/fW2EA/3/

2 个答案:

答案 0 :(得分:2)

在你的销毁功能中包含这一行(你的小提琴中缺少这一行):

console.log(Food, $scope);

然后在你的调试器中,检查范围变量的Closure部分(我使用的是Chrome),当你的断点停止时。 Food$scope就在那里(正如人们所期待的那样!)。

在destroy函数的上下文中,

this是ng-repeat中的新范围,因此与$scope不同,尽管两者都是范围。

答案 1 :(得分:1)

在您的函数中,this是范围,例如this.foods

我相信如果您希望Food可以访问,请将其添加到范围内,即$scope.Food = Food;

我仍然是菜鸟,我不确定将Food添加到$scope是否正确。