AngularJS - 在等待数据/数据计算时加载图标

时间:2014-05-06 09:16:37

标签: jquery angularjs get angularjs-directive angularjs-scope

我有一个简单的Angular http.get:

app.factory('countriesService', function($http) {
return {
    getCountryData: function(done) {
        $http.get('/resources/json/countries.json')
        .success(function(data) { done(data);})
        .error(function(error) {
            alert('An error occured');
        });
    }
}
});

示例.JSON:

{
"NoCities": 66,
"Balance": 2103,
"Population":  63705000,
"CityInfo": [
    {
        "CityName": "London",
        "CityPopulation": "7825200",
        "Facts": {
            "SubFact1": "xzy",
            "SubFact2": "xzy",
            "SubFact3": "xzy",
            "SubFact4": "xzy",
            "SubFact5": "xzy"
        },
    },
    {
        "CityName": "Manchester",
        "CityPopulation": "2584241",
        "Facts": {
            "SubFact1": "abc",
            "SubFact2": "abc",
            "SubFact3": "abc",
            "SubFact4": "abc"
        },
    }

],
"SubmitInfo": null,
"FormAction": null,
"FormController": null,
}

我注意到我的网页执行.length时,有时可能需要一段时间来加载数据,例如:

<div>
    <a>Countries</a> : {{Countries.length}}
</div>

Angular是否有某种形式的等待/加载图标,我可以在DIV中的数据被填充时显示?

理想情况下,它是轻量级的,并且不需要加载库(我的应用程序也使用jQuery)

由于

2 个答案:

答案 0 :(得分:13)

这是我惯常的做法。对OZ来说,这需要Font Awesome<i>的类fa fa-spinner fa-spin是对该库的引用。

虽然,您也可以选择显示/隐藏表示加载的.gif

标记

使用ng-hideng-show来控制微调器和包含已填充数据的元素的可见性。

<p class="text-center" ng-hide="dataLoaded">
    <i class="fa fa-spinner fa-spin"></i>
</p>
<div ng-show="dataLoaded">
    <a>Countries</a> : {{Countries.length}}
</div>

JS

在致电之前,请将$scope.dataLoaded设为false。然后,在success块中,将其设置为true。另外值得注意的是,您需要将$scope传递给您的工厂。

app.factory('countriesService', function($http, $scope) {
    return {
        getCountryData: function(done) {
            $scope.dataLoaded = false;
            $http.get('/resources/json/countries.json')
            .success(function(data) { 
                done(data); 
                $scope.dataLoaded = true;
             })
            .error(function(error) {
                alert('An error occured');
            });
        }
    }
});

答案 1 :(得分:1)

AngularJS不是CSS框架。你可以在TWA of FontAwesome找到加载图标: http://fortawesome.github.io/Font-Awesome/examples/#spinning