Зачем использовать ngcordova?

Я использую ionic (новый пользователь), и мне нужны плагины. У меня возникли проблемы, почему я хочу использовать ngcordova вместо использования плагина cordova напрямую, используя следующие шаги?

Например, чтобы иметь возможность захватывать видео, я мог бы использовать плагин ngcordova:

$ cordova plugin add cordova-plugin-media-capture

/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

module.controller('MyCtrl', function($scope, $cordovaCapture) {


  $scope.captureVideo = function() {
    var options = { limit: 3, duration: 15 };

    $cordovaCapture.captureVideo(options).then(function(videoData) {
      // Success! Video data is here
    }, function(err) {
      // An error occurred. Show a message to the user
    });
  }

});

Или я могу напрямую использовать плагин Cordova:

$ cordova plugin add cordova-plugin-media-capture

/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

document.addEventListener("deviceready", onDeviceReady, false);
function onDeviceReady() {
    navigator.device.capture.captureVideo(
            CaptureCB captureSuccess, CaptureErrorCB captureError,[CaptureVideoOptions options]
        );
}

Затем я пытаюсь понять, в чем преимущество использования ngcordova по сравнению с плагином напрямую? Не будет ли плагин напрямую лучше, так как тогда у вас всегда будет последний код, если он вам нужен, и нет никакой абстракции?


person user2924127    schedule 23.06.2015    source источник


Ответы (3)


Потому что это намного упрощает использование плагинов Cordova, когда вы используете angularjs.

С ngCordova вместо того, чтобы напрямую вызывать плагины Cordova и выяснять правильный объект или имя плагина или проверять, действительно ли плагин установлен, вы можете просто вызвать простую службу AngularJS следующим образом:

$cordovaCamera.getPicture(options)
  .then(function(imageData) {

    // Process camera data

  }, function(error) {

    // Show an error to the user

  });

вы можете проверить подробности здесь, http://blog.ionic.io/ng-cordova/

person Faizan Shakeel    schedule 10.07.2015

ngCordova — это фреймворк, который делает собственный API Cordova доступным в виде сервисов AngularJS.

(Источник)

Итак, без ngCordova вы получаете доступ к библиотеке Cordova напрямую через «обычный JS». ngCordova упаковывает библиотеку в удобный для Angular способ.

Вы можете возразить, что если вы используете необработанную Cordova (не ng-cordova) с Angular, вы должны обернуть свои вызовы Cordova в службу. По сути, это «изобретение велосипеда», поскольку ng-cordova была предоставлена ​​именно для этой цели. :)

person rinogo    schedule 15.08.2016

Если вы используете машинописный текст, имейте в виду, что ngcordova не имеет типов машинописного текста, и их сигнатуры функций могут и иногда отличаются от сигнатур функций кордовы.

person user542319    schedule 31.03.2016
comment
Похоже, это не совсем так. Многие варианты типизации доступны здесь: github.com/DefinitelyTyped/DefinitelyTyped/tree/ - person rinogo; 16.08.2016