AngularJS 在用户操作之前绑定不会在页面上发生

AngularJS binding not occurring on page until a user action

我有我的第一个 angular 应用程序,它通过 ng-repeat 显示列表中的一些数据。

视图的控制器将一些变量设置为范围 - 一些直接在函数中,另一个来自 API 调用。

函数加载中的数据显示在该 ng-repeat 中。来自服务调用的数据未显示(调试显示正在调用函数并且返回数据并在范围内设置)。

我有一个过滤器,如果我在其中输入任何内容,就会显示数据。或者,当我单击另一个视图时,数据会在加载新视图之前短暂地闪烁到页面上。

这是一些查看代码(项目有效,场地无效):

<div ng-repeat="item in items">
{{ item.firstName }}
</div>
<div ng-repeat="venue in venues">
{{ venue.details }}
</div>

这是控制器(数据从调用返回):

$scope.items = [
{ "firstName": "John", "lastName": "Doe" },
{ "firstName": "Anna", "lastName": "Smith" },
{ "firstName": "Peter", "lastName": "Jones" }
];

var client = new WindowsAzure.MobileServiceClient("url", "key");

var query = client.getTable("venues").read().done(function (results) {
            $scope.venues = results;
        }, function (err) {
            alert("Error: " + err);
        });

我想知道在从 API 返回数据之前是否可能发生绑定?

我在函数中添加了 div 和这一行,它正在将结果打印到页面上没有问题:

document.getElementById("venueslist").innerHTML = JSON.stringify(结果);

感谢您的阅读。

查看您的代码 client.getTable 看起来它没有使用任何 angularJs $http$timeout 服务。因此,您必须将分配包装在 scope.$apply() 中,以便 $digest 周期为 运行 并且绑定在视图中更新。

    var query = client.getTable("venues").read().done(function (results) {
        $scope.$apply(function () {
           $scope.venues = results;
        });
    }, function (err) {
        alert("Error: " + err);
    });

旁注:你为什么要做JSON.parse(JSON.stringify(results)),如果它是json对象,你可以直接使用results