Angular - 资源对象有时是未定义的?

时间:2014-12-14 20:49:16

标签: angularjs angularjs-resource

我有一个使用Angular的简单应用程序,它以Tastypie REST资源为基础。

我有一个使用工厂定义的资源:

app.factory("Task", function($resource) {
    return $resource("/api/v1/task/:id/", {scheduling: '@scheduling', meta_only: '@meta_only'});
  });

和一个具有多个功能的简单控制器:

app.controller("TasksController", function($scope, Task){

   Task.get(function(data){ 
       $scope.tasks = data.objects;
   });

   $scope.markAsDone = function(task){
       task.is_done = true;
       task.$save();
   }
}

View有一个简单的ng-repeat of tasks和一个复选框,它在ng-change上调用markAsDone(task)。还有其他几个类似的简单函数。

现在我不时会收到错误说" undefined不是函数"当我调用任务时。$ save()。我无法弄清楚我何时以及为什么这样做,并且没有得到此错误,因为它有时会按预期工作。我确实设法记录了#34;任务"在两种情况下的函数中,当错误发生时,它是一个对象,当它没有时,它具有Angular使用的所有这些属性和函数。

我错过了什么?

1 个答案:

答案 0 :(得分:0)

添加支票

$scope.markAsDone = function(task){
   if(typeof task !== undefined){
      task.is_done = true;
      task.$save();
   }
}