从数组中删除一项会导致首先删除所有项目吗?

时间:2016-08-01 20:30:41

标签: javascript angularjs

我正在使用angular创建一个简单的待办事项列表应用程序,似乎无法弄清楚这个奇怪的错误。当页面最初加载时,如果我将任务添加到我的待办事项列表,然后尝试删除一个整个列表消失。但是,如果我不刷新并添加更多任务,他们将在之后单独删除。有人能帮助我找出我所缺少的东西吗?

厂:

//Save user in local storage
AccountFactory.saveUser = function (user) {
    var users = getUsers();
    var index = this.getUser(user.email, 'index');
    users[index] = user;
    localStorage.setItem('Users', JSON.stringify(users));
    return { status: 200, message: 'User saved', data: user };
};

AccountFactory.setCurrentUser = function (user) {
    localStorage.setItem('currentUser', JSON.stringify(user));
    return { status: 200, message: 'Current user set', data: user };
};

//Delete Task
AccountFactory.removeTask = function (user, task) {
    var index = user.tasks.indexOf(task);
    user.tasks.splice(index, 1);
    return this.saveUser(user);
}

//Get all users function
function getUsers() {
    var users = JSON.parse(localStorage.getItem('Users')) || [];
    return users;
}

//Get user function
AccountFactory.getUser = function (email, type) {
    var users = getUsers();
    var account,
        index;
    for (var i = 0, user; user = users[i]; i++) {
        if (user.email.toLowerCase() === email.toLowerCase()) {
            account = user;
            index = i;
            break;
        }
    }

    if (type === 'account') return account;
    if (type === 'index') return index;
};

控制器:

function saveUser(user) {
    var response = AccountFactory.saveUser(user);
    if (response.status === 200) {
        var newUser = new User(response.data);
        AccountFactory.setCurrentUser(user);
        $scope.user = user;
        console.log(response.message);
    }
}

$scope.removeTask = function (task) {
    var response = AccountFactory.removeTask($scope.user, task);
    saveUser(user);
}

0 个答案:

没有答案