javascript - 为什么我的 AngularJS View 在使用 Parse.com JavaScript SDK 进行 AJAX 调用后没有得到更新?

标签 javascript ajax angularjs xmlhttprequest parse-platform

这是我的看法

<div ng-repeat="blog in blogs">
<h3>{{blog.title}}</h3>
<h4>{{blog.post}}</h4>
</div>

我的 Controller 代码:

   demoApp.controller('myController', ['$scope', 'blogService', function ($scope,   
    blogService)
    {
        $scope.blogs = blogService.getBlogs();
    }]);

我在服务中的代码。这包括对 Parse.com javascript sdk 的异步调用。

this.getBlogs = function () 
{        
   var BlogPost = Parse.Object.extend("BlogPost");
   var blogPost = new BlogPost();
   var blogs  = [];
    var query = new Parse.Query(BlogPost);
    query.find({
        success: function(results) {
            console.log(results[0].get("title"));
            for (var i = 0; i < results.length; i++)
            {
                blogs.push(
                    {
                        title : results[i].get("title"),
                        post : results[i].get("post")
                    });
            }
            console.log(blogs);
        },
        error: function(error) {
            alert("Error: " + error.code + " " + error.message);
        }
    });
    return blogs;
}; });

控制台日志 console.log(blogs); 完美地显示了返回的数据。获取此值后,只是 View 不会更新。

最佳答案

回调中的代码在“Angular 世界之外”执行,这意味着 $digest 循环不会被触发,更改也不会反射(reflect)在 DOM 中。

您需要使用 $apply :

$apply() is used to execute an expression in angular from outside of the angular framework. (For example from browser DOM events, setTimeout, XHR or third party libraries). Because we are calling into the angular framework we need to perform proper scope life cycle of exception handling, executing watches.

在您的服务中注入(inject) $rootScope,例如:

success: function(results) {
  $rootScope.$apply(function () { 
    console.log(results[0].get("title"));
    for (var i = 0; i < results.length; i++)
    {
        blogs.push(
            {
                title : results[i].get("title"),
                post : results[i].get("post")
            });
    }
    console.log(blogs);
  });
},

关于javascript - 为什么我的 AngularJS View 在使用 Parse.com JavaScript SDK 进行 AJAX 调用后没有得到更新?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23412238/

相关文章:

jquery - MVC 部分 View 中 ajax 表单提交后 Tinymce 消失

angularjs - 加载 View 时运行 AngularJS 初始化代码

angularjs - 内联 CKEditor + AngularJS + 数据处理

javascript - 单击链接后,javascript 何时停止在页面上运行?

javascript - 如何订购巨大(GB 大小)的 CSV 文件?

javascript - 函数之前的 jQuery 选择器

javascript - 循环中的函数

javascript - 什么是 javascript 反斜线以及它如何处理多行字符串?

javascript - 从外部 URL 通过 Ajax 调用获取 JSON 数据

javascript - BigCommerce:如何创建自定义过滤器?