在发布帖子请求后显示数据而不刷新AngularJs中的页面

时间:2014-05-21 09:12:22

标签: javascript angularjs http-post angularjs-scope angularjs-ng-repeat

我正在发帖子请求创建笔记。在成功回调之后,我将新数据推送到笔记的范围内。但该页面未显示更新的笔记数组。 我的代码如下:

Controller.js

    var populateNotes = function (err) {
                $scope.notes = [];
                if (err) {
                    return err;
                }
                for (var i = 0; i < NotesService.getNotes()
                    .length; i++) {
                    $scope.notes.push({
                        text: NotesService.getNotes()[i].note,
                        when: $moment(NotesService.getNotes()[
                            i].ct)
                            .fromNow()
                    })
                };
                console.log("notes: ", $scope.notes);
            }

    $scope.createNote = function () {
                var data = {
                    note: $scope.notetext
                };
                model.createNote(id, aid, data, populateNotes);
            }

我的html如下:

    <tr ng-repeat="note in notes">
         <td class="text-center">{{note.text}}</td>
         <td class="text-center">{{note.when}}</td>
    </tr>

问题是,在成功创建帖子请求时,dom应该自动更新并显示新创建的音符。但这不会发生。谁能让我知道我做错了什么?

1 个答案:

答案 0 :(得分:0)

Angular会在事件(点击,焦点,...)发生后立即更新视图。在您的情况下,后期响应在渲染后发生,从而导致过时的视图。您需要告诉它应用更改:

var populateNotes = function (err) {
    ...
    console.log("notes: ", $scope.notes);
    $scope.$apply('notes');
}