【问题标题】:Showing data after making a post request without refreshing the page in AngularJs发出发布请求后显示数据而不刷新AngularJs中的页面
【发布时间】:2014-05-21 09:12:21
【问题描述】:

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

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>

问题是在成功创建 post 请求后,dom 应该自动更新并显示新创建的注释。但这并没有发生。谁能告诉我我做错了什么?

【问题讨论】:

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


    【解决方案1】:

    Angular 将在事件(单击、焦点、...)发生后更新视图。在您的情况下,发布响应发生在渲染之后,导致视图过时。您需要告诉它应用更改:

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

    【讨论】:

    • 嗨,我使用了 $apply,但它显示了这个错误:err : $digest already in progress
    猜你喜欢
    • 2018-04-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-06-19
    • 1970-01-01
    • 2022-01-22
    • 2019-02-13
    • 1970-01-01
    相关资源
    最近更新 更多