2016-10-30 190 views
0

“终于”我想不出最后一线,我不知道为什么。 这个问题可以复制克隆的Git回购 https://github.com/Velua/To-Do-List无法读取属性未定义

this.saveToDos = function(todos){ 
     var queue = []; 
     todos.forEach(function(todo){ 
      var request; 
      if(!todo._id){ 
       request = $http.post('/api/todos', todo); 
      } else{ 
       request = $http.put('/api/todos/' + todo._id, todo).then(function(result){ 
        todo = result.data.todo; 
        return todo 
       }) 
      } 
      queue.push(request); 
     }) 
     $q.all(queue).then(function(results){ 
      console.log("I saved " + todos.length + " todos!"); 
     }) 
    } 

谢谢!

+0

是什么'dataService.saveToDos'返回? – JJJ

+0

'finally()'是一个保留关键字(函数);尝试的一部分...终于赶上...。所以没有尝试阻止,最后会导致这样的错误。 –

+1

@KiranShakya如果它被用作关键字,那会是真的,但事实并非如此。 – JJJ

回答

0

您没有从saveToDos()返回任何东西,所以返回值默认为undefined

你可能想return $q.all(...

+0

你这个血腥传奇!非常感谢! – velua

-1

究竟做dataService.saveToDos(filteredTodos)回报?

看来你没有返回任何东西,导致未定义的错误。如果你的目的是重置dataService.saveToDos(filteredTodos)完成后的状态,在saveToDos返回一个承诺,并重新设置内部然后

saveToDos(filteredTodos) => { 
    /* Your Code */ 
    return Promise.resolve(true) 
} 

saveToDos(filteredTodos).then((val) => if(val) resetState();); 
相关问题