更新范围属性不会更新视图

时间:2018-05-15 17:30:19

标签: angularjs ng-show

这是我以前多次被问过的一个问题,但我似乎无法找到适合我的解决方案。我有一个简单的代码,用于更新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函数添加到作用域。

1 个答案:

答案 0 :(得分:1)

<div ng-show="{{ loading === true }}">应为<div ng-show="loading === true">或仅

<div ng-show="loading">

loadingscope中定义的变量。您可以像在案例中的角度指令ng-show中那样访问范围变量