我的网站有两个网页:
设置页面:包含JSON内容的网页,如下所示:
{"来源":[" 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>
不幸的是,这段代码不起作用。这是因为在加载页面时,$scope.Settings.Sources
还没有准备就绪。因此,ng-repeat必须在&#34;来源&#34;之后运行。页面已下载。
这可能吗?如果是,怎么样?
答案 0 :(得分:2)
对于这种情况,您不应该使用ng-init
,因为数据来自Ajax并且您要将空白对象分配给源。原因尚未回复。相反,我会直接在您的视图中使用Settings.Sources
变量。
<强>标记强>
<div>
<ul>
<li ng-repeat="source in Settings.Sources">
{{ source }}
</li>
</ul>
</div>
旁注:
$scope
变量可以直接在angular指令中访问,您不需要明确指定$scope