как показать выбранные имена изображений внутри модального, используя ionic и angular?

Я использовал плагин Cordova для выбора изображений из галереи iOS и отображения изображения. Проблема, с которой я столкнулся, заключается в том, что мне нужен модальный режим, в котором должны отображаться имена выбранных изображений, но я не могу отобразить этот модальный режим. Вот мой код:

Мой контроллер:

app.controller('ImagePickerController', function($scope, $rootScope,$cordovaImagePicker, $ionicPlatform, $cordovaContacts,$ionicModal) {
    $scope.ready = false;
    $scope.images = [];

    $scope.openGallery = function() {
        alert("hii");

        var options = {
                maximumImagesCount: 20, // Max number of selected images, I'm using only one for this example
                width: 800,
                height: 800,
                quality: 100            // Higher is better
        };

        $cordovaImagePicker.getPictures(options).then(function(results) {
            for(var i=0 ; i<results.length ; i++){
                //alert(results[i]);
                //console.log('img', imageUri);
                $scope.images.push(results[i]);
                var imagename = results[i];
                $scope.truncatedimgname = imagename.replace(/^.*[\\\/]/, '')
                alert(truncatedimgname);
            }

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

        openModal();
    };

$scope.openModal = function(animation) {
    alert("modal");
    $ionicModal.fromTemplateUrl('contact-modal.html', {
      scope: $scope,
      animation: 'slide-in-up'
    }).then(function(modal) {
      $scope.modal = modal;
      $scope.modal.show();
    });
  };
  $scope.closeModal = function() {
    $scope.modal.hide();
  };

});

Я усек имя изображения с расширением внутри truncatedimgname. Я хочу, чтобы мое модальное окно отображалось, когда пользователь нажимает кнопку «Готово» после выбора изображений и показывает их имена внутри этого модального окна.


person Anky    schedule 18.01.2016    source источник


Ответы (2)


Вы должны вызвать $scope.openModal() внутри функции успеха. На самом деле results доступен только внутри этой функции и асинхронно (после выбора пользователем), потому что $cordovaImagePicker.getPictures(options) возвращает обещание.

$cordovaImagePicker.getPictures(options)
    .then(function (results) {
      // on success
      ...

      openModal();
    }, function(error) {
      // on error
      ...
    });
person beaver    schedule 18.01.2016

В вашем опубликованном коде вы определили функцию как $scope.openModal, но при вызове функции вы указали только openModal(), которая не найдет вашу функцию, прикрепленную к переменной $scope.

Вы должны вызывать функцию как $scope.openModal();

person SM3RKY    schedule 20.01.2016