2016-10-30 77 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();); 
相關問題