使用Angular将项目添加到列表顶部

时间:2014-07-11 20:40:11

标签: javascript arrays angularjs list prepend

我有一个简单的应用程序,它将一个项目添加到列表中,但该项目将添加到列表的底部而不是顶部。有没有办法让它添加到顶部,如前置?如果您需要更多代码,请与我们联系。任何帮助是极大的赞赏。谢谢。

HTML

<!-- LOOP OVER THE TODOS IN $scope.todos -->
            <div class="checkbox" ng-repeat="todo in todos">
                <label>
                    <input type="checkbox" ng-click="deleteTodo(todo._id)"> {{ todo.text }}
                </label>
            </div>

一些Angular.js

// when submitting the add form, send the text to the node API
    $scope.createTodo = function() {
        $scope.loading = true;

        // validate the formData to make sure that something is there
        // if form is empty, nothing will happen
        if ($scope.formData.text != undefined) {

            // call the create function from our service (returns a promise object)
            Todos.create($scope.formData)

                // if successful creation, call our get function to get all the new todos
                .success(function(data) {
                    $scope.loading = false;
                    $scope.formData = {}; // clear the form so our user is ready to enter another
                    $scope.todos = data; // assign our new list of todos
                });
        }
    };

// create todo and send back all todos after creation
app.post('/api/todos', function(req, res) {

    // create a todo, information comes from AJAX request from Angular
    Todo.create({
        text : req.body.text,
        done : false
    }, function(err, todo) {
        if (err)
            res.send(err);

        // get and return all the todos after you create another
        Todo.find(function(err, todos) {
            if (err)
                res.send(err)
            res.json(todos);
        });
    });

});

1 个答案:

答案 0 :(得分:1)

在从评论中获得更多信息后重写答案。

问题是todos是一个对象而不是一个数组。在Angular中,当在对象上迭代(ng-repeat)时,对象的键用于确定项的顺序。在处理事物列表(待办事项)时,这通常不是您想要的。因此,解决这个问题的方法是更改​​后端,以便返回一个数组。

我不会过多地介绍mongodb有关如何完成此操作的详细信息,但通常您可以将每个待办事项存储为自己的文档并返回所有文档的get,或者您可以存储一个带有todos属性的文档(这是一个BsonArray)并返回该文档。