如何为Ionic中的每个图像加载添加微调器

时间:2016-06-13 00:20:01

标签: javascript angularjs html5 ionic-framework

我正在尝试加载每个图片加载时显示微调器的图像列表。

这就是我所拥有的,但是没有看到如何在加载每个图像时添加微调器,而不是在加载时看到空白屏幕

<div ng-repeat="i in data| filter: { tags: tag } " class='wrapper' id="homeImg">
    <!-- wrapper div -->

    <!-- image -->
    <a href="#/information"> <img class="ng-cloak" style="float:left; display:inline-block; overflow:hidden; border: 1px;" class="fill_image" src='{{ i.picture }}' style width="100%" style height="100%" ng-click="disableClick('{{ i.firebase_url }}')" /> </a>
    <!-- description div -->
    <div class='description'>
        <!-- description content -->
        <p class='description' style="float: left">
            {{i.title }}
        </p>
        <p class='description' style="float: right">
            {{i.location}}
        </p>

        <!-- end description content -->
    </div>
    <!-- end description div -->
</div>

1 个答案:

答案 0 :(得分:2)

您可以使用||标记内的ng-src运算符轻松完成此操作:

控制器:

$scope.loading = "<some-pic.gif>";

查看:

<!-- image -->
<a href="#/information">
    <img ng-src='{{ (i.picture) || (loading) }}'/>
</a>
  • src标记更改为ng-src,它更加符合Angular
  • 定义加载图片/ gif(之前上传的文件)并将其存储在$scope变量
  • 使用||运算符,如果第一个选项为undefined,则第二个(gif)将显示

小提琴:http://jsfiddle.net/xf3ezakc/

此外,您可以使用控制器内的$ionicLoading来显示加载提醒,直到所有图片已加载为止,我回答了有关如何执行此操作的另一个问题here

$scope.show = function() {
    $ionicLoading.show({
        template: 'Loading...'
    }).then(function(){
        console.log("The loading indicator is now displayed");
    });
};
$scope.hide = function(){
    $ionicLoading.hide().then(function(){
        console.log("The loading indicator is now hidden");
    });
};

// Assuming you have `$scope.data`, which it seems so
$scope.data = {};
$scope.show();
someDataCall().then(function(data) {
    // success
    $scope.hide();
}).catch(error) { 
    // error
    $scope.hide();
});

我发现您的代码中也有firebase引用,如果您使用的是$firebaseArray$firebaseObject,则可以$ionicLoading$loaded结合使用检测图像加载的时间(包含在AngularFire API中):

$scope.data.$loaded().then(function(data) {
    // success
    $scope.hide();
}).catch(function(error) {
    // error
    $scope.hide()
});

对于最后2个,请务必注入$ionicLoading

参考文献:

ng-src

$ionicLoading

AngularFire

ion-spinner(我从未使用过它)