Javascript 数据准备就绪时重复ng
我有一个包含两个网页的网站:Javascript 数据准备就绪时重复ng,javascript,angularjs,data-binding,angularjs-ng-repeat,Javascript,Angularjs,Data Binding,Angularjs Ng Repeat,我有一个包含两个网页的网站: 设置页面:包含JSON内容的网页,如下所示: <div ng-init="sources=$scope.Settings.Sources"> <ul> <li ng-repeat="source in sources"> {{ source }} </li> </ul> </div> {“来源”:[“1”、“2”、“3”、
<div ng-init="sources=$scope.Settings.Sources">
<ul>
<li ng-repeat="source in sources">
{{ source }}
</li>
</ul>
</div>
{“来源”:[“1”、“2”、“3”、“4”]}$scope.Settings.sources
我的AngularJS代码:
$scope.getSettings = function (ID, successCallback, failureCallback)
{
$scope.ID = ID;
$http.get("/sources?ID=" + ID).then(function (response)
{
if (response.status == 200)
{
$scope.Settings = response.data;
successCallback();
}
else
{
failureCallback();
}
});
}
function getSettings_success()
{
// Ready to update the ng-repeat NOW.
}
function getSettings_error()
{
alert('Error');
}
$scope.getSettings(1, getSettings_success, getSettings_error);
现在,当我准备好$scope.Settings.Sources
后,我所要做的就是在特定的HTML模板中打印每个soruce。因此,我想使用ng repeat来完成此任务。大概是这样的:
<div ng-init="sources=$scope.Settings.Sources">
<ul>
<li ng-repeat="source in sources">
{{ source }}
</li>
</ul>
</div>
-
{{source}}
不幸的是,这段代码不起作用。这是因为加载页面时,$scope.Settings.Sources
尚未就绪。因此,ng repeat必须在下载“源”页面后运行
这可能吗?如果是,怎么做?您不应该在这种情况下使用,因为数据来自Ajax,并且您正在将空白对象分配给源。原因还没有反应。相反,我会直接在视图中使用设置.Sources
变量
标记
<div>
<ul>
<li ng-repeat="source in Settings.Sources">
{{ source }}
</li>
</ul>
</div>
-
{{source}}
旁注:$scope
变量在角度指令内可直接访问,无需明确指定$scope
这是有效的。非常感谢。但我不明白这是怎么回事?ng repeat如何“知道”在“Setting.Sources”中何时有数据?@no1lives4 angular摘要系统处理过的任何数据。angular指令中视图上绑定的任何变量,都会在每个摘要周期中计算该值(在这里,ajax完成后,angular运行摘要周期并更新绑定)