1

我昨天在另一个问题中提出了这个问题,但我认为最好将其分解为自己的问题。

我有一个注册表单,要求用户提供姓名、地址、电子邮件等。作为回报,smartystreets API 返回建议的地址,以纠正可能输入错误的地址。我拥有的(全部在一个页面上)是 1)注册表单和 2)一个隐藏的列表项,我想用返回的地址填充它(通过 ng-repeat),最终将通过 Jquery UI 作为弹出窗口取消隐藏.

因此,主要问题是如何通过 ng-repeat 填充列表项,因为在任何数据可以填充列表项之前加载注册页面。

当数据已经存在时,我使用 ng-repeat 填充 li,但是当数据将在页面加载后传递时,我对在这种情况下该怎么做感到困惑。

4

1 回答 1

2

只需像使用ng-repeat其他数组一样使用您的数组。我更喜欢在控制器中定义它,然后才知道有一些东西,但 angular 也可以为你处理。

<li ng-repeat="address in addresses">

正如评论中已经提到的那样,angular 会监视您的ng-repeat项目的变化,因此每当您更改它时它就会更新。例如,当您运行 ajax 请求时:

$http({method: 'GET', url: '/api/smartystreets/whatever'}).success(function(addresses) {
    $scope.addresses = addresses;
});

实际上,数据是否已经就绪并不重要,异步操作是在页面加载时启动的,或者稍后再启动ng-change或其他任何操作。

这是 angular 的优势之一,双向数据绑定。您需要做更多工作的唯一一点是,当您使用任何未被角度“覆盖”的异步事件时,因此需要您自己使用$apply.

于 2014-04-20T17:41:46.843 回答