我无法弄清楚为什么我会得到一个
无法在此处读取“最终”未定义错误的属性..
$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())
}
它在最后一行出错,我不知道为什么。 这个问题可以转载克隆Git repo 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 :(得分:2)
您没有从saveToDos()
返回任何内容,因此返回值默认为undefined
。
你可能想要return $q.all(...
答案 1 :(得分:-1)
dataService.saveToDos(filteredTodos)究竟返回了什么?
似乎你没有返回任何东西,导致未定义的错误。如果您打算在 dataService.saveToDos(filteredTodos)完成后重置状态,请在saveToDos中返回一个promise并在中重置
saveToDos(filteredTodos) => {
/* Your Code */
return Promise.resolve(true)
}
saveToDos(filteredTodos).then((val) => if(val) resetState(););