无法读取未定义的属性'finally'

时间:2016-10-30 11:24:51

标签: javascript angularjs

我无法弄清楚为什么我会得到一个

无法在此处读取“最终”未定义错误的属性..

$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!");
        })
    }

谢谢!

2 个答案:

答案 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(););