AngularJS为数组

时间:2017-01-18 10:08:29

标签: javascript angularjs master-detail

我对编程很新,我遇到了一个非常令人沮丧的问题。我真的花了几个小时才找到答案,但我失败了。

所以基本上我正在制作一份Master Detailed todo列表。我的todos是数组中的对象。我现在应该为主要细节事物制作不同的视图,但我无法通过ID分离对象。

这是我的AngularJS代码:

myTodoList.controller("mainController", ['$scope', function($scope, $route, $routeParams, $location) {
    $scope.todos = [{
        'id': 0,
        'title': '',
        'done': false,
        'priority': '',
        'deadLine': '',
    }];

    $scope.$route = $route;
    $scope.$location = $location;
    $scope.$routeParams = $routeParams;
    $scope.params = $routeParams;
    $scope.todos = [];

    $scope.addTodo = function(title, priority, deadLine, id) {
        $scope.todos.push({
            'id': $scope.todos.id,
            'title': $scope.newTodo,
            'done': false,
            'priority': $scope.newPriority,
            'deadLine': $scope.newDeadLine
        });
        $scope.newTodo = ''
        $scope.newPriority = ''
        $scope.newDeadLine = ''
        $scope.todos.id++;
    }

在这种情况下,当我尝试通过以下方式创建路由时:id表示它是NAN(不是数字I quess)。但是,如果我将代码更改为:

$scope.addTodo = function(title, priority, deadLine, id) {
        $scope.todos.push({
            'id': 0,
            'title': $scope.newTodo,
            'done': false,
            'priority': $scope.newPriority,
            'deadLine': $scope.newDeadLine
        });
        $scope.newTodo = ''
        $scope.newPriority = ''
        $scope.newDeadLine = ''
        $scope.todos.id++;
    }

这是'id': 0,然后所有待办事项都会获得ID中的数字0。已经过了3天,因为我无法做到这一点。

2 个答案:

答案 0 :(得分:1)

不确定为什么使用数组来保存最后一个id,但问题是你没有初始化id;

var id;
id++; //NAN

Javascript非常丢失,您可以看到,您可以向数组添加属性并在未定义的变量上使用运算符而不会出现任何错误。在您的情况下,初始化数组后的$scope.todos.id = 0;应该可以解决问题。

但最好将最后一个ID保存在另一个变量中,并且不需要在范围内,只需var lastId = 0;lastId++即可。

答案 1 :(得分:0)

$scope.todos是一个数组,因此行'id': $scope.todos.id无法正常工作。

将其更改为:

$scope.todos.push({
    'id': $scope.todos[0].id // <-- here
    'title': $scope.newTodo,
    'done': false,
    'priority': $scope.newPriority,
    'deadLine': $scope.newDeadLine
});

使用数组的第一个元素是synthax。