2016-10-30 8 views
0

las ich nicht heraus kann, warum ich erhalte eineKann nicht Eigentum ‚endlich‘ undefinierter

Kann nicht Eigentum ‚endlich‘ undefinierter Fehler lesen Sie hier ..

$scope.saveToDos = function(){ 
    console.log("Save to do was pressed.") 
    var filteredTodos = $scope.todos.filter(function(todo){ 
     if(todo.edited){ 
      return todo 
     } 
    }) 
    console.log("There are " + filteredTodos.length + " edited todos") 
    dataService.saveToDos(filteredTodos) 
    .finally($scope.resetTodoState()) 
} 

Es Fehler heraus die letzte Zeile und ich bin mir nicht sicher warum. Das Problem kann Repo-Klonen 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!"); 
     }) 
    } 

Dank reproduzierenden!

+0

Was bedeutet 'dataService.saveToDos' zurückkehren? – JJJ

+0

'finally()' ist ein reserviertes Schlüsselwort (Funktion); Teil eines Versuches ... Fang ... endlich. also ohne try-block, wird endlich solch einen fehler verursachen. –

+1

@KiranShakya Das wäre wahr, wenn es als Schlüsselwort verwendet würde, aber es ist nicht wahr. – JJJ

Antwort

0

Sie geben nichts von zurück, daher ist der Rückgabewert standardmäßig undefined.

Sie wollten wahrscheinlich return $q.all(...

+0

Du verdammte Legende! Danke vielmals! – velua

-1

Was genau macht dataService.saveToDos (filteredTodos) Rückkehr?

Es scheint, dass Sie nichts zurückgeben und den undefinierten Fehler verursachen. Wenn Ihre Absicht ist es, den Zustand, nachdem das dataService.saveToDos (filteredTodos) getan wird, um zurückgesetzt, ein Versprechen in saveToDos zurückkehren und setzt es in dann

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

saveToDos(filteredTodos).then((val) => if(val) resetState();); 
Verwandte Themen