这是我以前多次被问过的一个问题,但我似乎无法找到适合我的解决方案。我有一个简单的代码,用于更新loading
属性和两个div,一个应该在加载为true时显示,另一个在加载为false时显示。
$scope.loading = true;
function getTasks() {
$http.get(URL)
.then(function (response) {
//success
$scope.tasks = response.data;
}
, function () {
//failure
$scope.errorMessage = "Failed to fetch tasks";
$timeout(getTasks(), 5000);
})
.finally(function () {
$scope.loading = false;
});
}
HTML如下:
<div ng-show="{{ loading === true }}">
<i class="fa fa-spinner fa-w-16 fa-spin fa-lg"></i>
</div>
<div ng-show="{{ loading === false }}">
但是,即使loading
确实更改为false,也不会更新视图。
我尝试过的一些事情是:
使用超时服务
$timeout(() => {
$scope.loading = false;
});
在将加载更改为false并在apply中调用函数后使用$scope.$apply()
。
将getTasks函数添加到作用域。
答案 0 :(得分:1)
<div ng-show="{{ loading === true }}">
应为<div ng-show="loading === true">
或仅
<div ng-show="loading">
loading
是scope
中定义的变量。您可以像在案例中的角度指令ng-show
中那样访问范围变量