离子:从图库中选择图像不正常

时间:2015-09-22 19:19:49

标签: angularjs ionic

我有一个代码浏览文件系统,并使用ionic和angularjs从库中选择图像。我目前的挑战是图像在选择时显示,有时在选择时不显示。从我的结果看,一切似乎都没问题,因为我已经检查过以确保所有插件和依赖项都被使用。以下是我的源代码,如果您能提供帮助,我们将非常高兴: 这是我的controllers.js代码:::

angular.module('appControllers', [])

.controller('HomeCtrl', ['$scope', '$rootScope', '$cordovaCamera', function($scope, $rootScope, $cordovaCamera) {

    $scope.ready = false;
    $scope.images = [];

    $rootScope.$watch('appReady.status', function() {
        console.log('watch fired '+$rootScope.appReady.status);
        if($rootScope.appReady.status) $scope.ready = true;
    });

    $scope.selImages = function() {

        var options = {
            quality: 50,
            destinationType: Camera.DestinationType.FILE_URI,
            sourceType: Camera.PictureSourceType.PHOTOLIBRARY,
            targetWidth: 200,
            correctOrientation: true,
            targetHeight: 200

        };

        $cordovaCamera.getPicture(options).then(function(imageUri) {
            console.log('img', imageUri);
            $scope.images.push(imageUri);

        }, function(err) {
        // error
        });

    };

}])

这是我的app.js代码:

.run(function($rootScope,$ionicPlatform) {
    $rootScope.appReady = {status:false};

    $ionicPlatform.ready(function() {
        console.log('ionic Ready');
        $rootScope.appReady.status = true;
        $rootScope.$apply();
        console.log('in app.js, appReady is '+$rootScope.appReady.status);
//      if(window.cordova && window.cordova.plugins.Keyboard) {
//          cordova.plugins.Keyboard.hideKeyboardAccessoryBar(true);
//      }
        if(window.StatusBar) {
            StatusBar.styleDefault();
        }
    });
});

2 个答案:

答案 0 :(得分:1)

要选择一个或多个图像,您可以使用“ImagePicker插件”。 在此插件中,您可以设置要选择的图像数量,并在最后它正常工作。 https://github.com/wymsee/cordova-imagePicker。 例 - >

ast.If

示例 - 获取最多10个缩放到宽度为800的图像:

window.imagePicker.getPictures(
function(results) {
    for (var i = 0; i < results.length; i++) {
        console.log('Image URI: ' + results[i]);
    }
}, function (error) {
    console.log('Error: ' + error);
} ); 

答案 1 :(得分:0)

我能够使用$scope.$apply();函数

来解决我的问题