1. 程式人生 > >ionic外掛基礎(四)——ngCordova配置安裝及ngCordova相機外掛的使用

ionic外掛基礎(四)——ngCordova配置安裝及ngCordova相機外掛的使用

ngCordova簡介

ngCordova是基於Cordova封裝的Angularjs的呼叫本地裝置介面的模組,可以呼叫70+個常用裝置接外掛,諸如訪問檔案,攝像頭,GPS,二維碼,感測器等等,這些外掛只需要簡單配置就可以在ionic中使用。ngCordova是在Cordova Api基礎上封裝的一系列開源的AngularJs服務和擴充套件,讓開發者可以方便的在HybridApp開發中呼叫裝置能力,即可以在AngularJs程式碼中訪問裝置能力Api。

這裡寫圖片描述

也就是說ngCordova更適合ionic專案使用,因為ngCordova在Cordova Api基礎上進行封裝,可以在AngularJs程式碼中訪問裝置能力Api,對於基於AngularJs的ionic來說使用更加方便。

在cordova外掛的sucess和error js回撥方法中,是無法使用 angularjs的$scope物件和注入的方法的,只能訪問全域性的方法和變數,這樣會導致很多麻煩,必須使用傳統的js方法寫很多難看的程式碼。使用 ngCordova應該可以解決這個問題。

ngCordova的安裝配置

官網提供了兩種安裝的方法:
1. 使用bower來安裝
2. 下載zip檔案

推薦使用bower安裝,在使用bower之前,我們電腦中需要先配置bower。bower的配置非常簡單:

bower簡介:

Bower是一個客戶端技術的軟體包管理器,它可用於搜尋、安裝和解除安裝如JavaScript、HTML、CSS之類的網路資源。

準備工作:

  • 安裝node環境:node.js
  • 安裝Git,bower從遠端git倉庫獲取程式碼包:git簡易指南

安裝bower:

使用npm,開啟終端,輸入:

npm install -g bower

其中-g命令表示全域性安裝

這時候我們就可以使用bower來安裝我們的ngCordova。

安裝ngCordova

進入到工程目錄,使用bower工具安裝:

bower install ngCordova

稍作等待,我們的ngCordova就安裝好了。

我們檢視一下我們的專案,發現ngCordova已經在“專案路徑\www\lib”下面:

這裡寫圖片描述

接著,將ng-cordova.js 或者 ng-cordova.min.js檔案include到我們的index.html。

<script src="lib/ngCordova/dist/ng-cordova.js"></script>
<script src="cordova.js"></script>

注意:ng-cordova.js檔案必須在cordova.js之前並且在 AngularJS / Ionic檔案之後(因為ngCordova depends on AngularJS)

在angular中新增ngCordova依賴

angular.module('myApp', ['ngCordova'])

通過deviceready event包裝每個外掛的呼叫

(不知道有沒有翻譯錯。。)

在使用每個外掛之前,必須先檢測裝置是否就緒,通過cordova內建的原生事件deviceready來檢測,如下:

document.addEventListener("deviceready", function () {
  $cordovaPlugin.someFunction().then(success, error);
}, false);

// OR with IONIC

$ionicPlatform.ready(function() {
  $cordovaPlugin.someFunction().then(success, error);
});

ngCordova相機外掛的使用

現在我們根據官網的文件來自己寫一個小demo。

為了於cordova外掛進行對比,我們還是使用上一講的專案(即建立ionic專案時預設的那個)。

首先我們還是要安裝外掛的:

cordova plugin add cordova-plugin-camera

templates/tab-dash.html中的程式碼跟上一講一樣:

<ion-view view-title="Dashboard">
  <ion-content class="padding">
    <h2> Camera Test </h2>
    <img id="imageFile"  src="./img/ionic.png"  width="100px" height="100px"/>

    <button ng-click="openCamera()">openCamera</button>

  </ion-content>
</ion-view>

在controllers.js中修改“DashCtrl”這個controller:

angular.module('starter.controllers', [])

.controller('DashCtrl', function($scope, $cordovaCamera) {

  document.addEventListener("deviceready", function () {

    var options = {
      quality: 50,
      destinationType: Camera.DestinationType.DATA_URL,
      sourceType: Camera.PictureSourceType.CAMERA,
      allowEdit: true,
      encodingType: Camera.EncodingType.JPEG,
      targetWidth: 100,
      targetHeight: 100,
      popoverOptions: CameraPopoverOptions,
      saveToPhotoAlbum: false,
      correctOrientation:true
    };

    $scope.openCamera= function(){
      $cordovaCamera.getPicture(options).then(function(imageData) {
        var image = document.getElementById('imageFile');
        image.src = "data:image/jpeg;base64," + imageData;
      }, function(err) {
        // error
      });

    }, false;
    })
})

注意,在app.js記得注入’ngCordova’:

angular.module('starter', ['ionic', 'starter.controllers', 'starter.services','ngCordova'])

實際演示效果跟上一講中使用cordova外掛沒有太大的區別,就不貼圖了。

在上面的程式碼中,我們關於外掛的使用都是在

document.addEventListener("deviceready", function () {})

中進行的,這也即我們在上面講的通過deviceready event包裝每個外掛的呼叫

通過對比可以發現,我們的controller中的程式碼比上一講中直接使用cordova簡單了許多而且更符合我們AngularJs的程式碼的編寫。

所以我還是建議使用ngCordova進行外掛的使用,當然是那些已經封裝好的。自定義外掛是另外一回事。

相關推薦

ionic外掛基礎——ngCordova配置安裝ngCordova相機外掛的使用

ngCordova簡介 ngCordova是基於Cordova封裝的Angularjs的呼叫本地裝置介面的模組,可以呼叫70+個常用裝置接外掛,諸如訪問檔案,攝像頭,GPS,二維碼,感測器等等,這些外掛只需要簡單配置就可以在ionic中使用。ngCordova

Spring Boot——Spring回顧——Spring MVC基礎高階配置

檔案上傳配置 上傳頁面 新增轉向到upload頁面的ViewController MultipartResolver配置 控制器 伺服器端推送技術 SSE 演示控制器 演示頁面 配置 Servlet 3.0+非同步方法處理

Service Cloud 零基礎快速配置一個問卷調查無開發

本篇參考:https://trailhead.salesforce.com/content/learn/modules/survey-basics 我們在工作和生活中會經歷過形形色色得調查問卷,有一些是公司郵件傳送給你,點開填寫,有一部分是二維碼掃一掃填寫,當然還有很多得生成方式。本篇講一下salesforc

ionic外掛基礎——自定義外掛的demo

上篇文章我們介紹了自定義外掛的開發流程,這篇文章我們就寫一個具體的例子,加深對自定義外掛的理解 自定義外掛的編寫 我們就在上篇文章中建立的外掛上做修改: MyPlugin.js var exec = require('cordova/

ionic外掛基礎—— 外掛的新增刪除

這裡的命令指的是新增刪除編寫好的外掛。它並沒有,也不提供start/create等類似的生成外掛程式碼框架的功能選項。若我們需要自己編寫自己的外掛,則可以使用額外的一個叫做plugman的工具。 檢視當前專案中的外掛 當我們在cmd中進入該目錄,

ionic外掛基礎——外掛原理cordova相機外掛的使用

在介紹外掛的使用之前,我們有必要先大致瞭解下外掛的原理 外掛工作原理分析 一個外掛是如何正確地在IONIC框架下執行的呢? 前臺的HTML/JS程式碼又是如何與後面具體平臺做資料互動的呢? 這個就需要對外掛的工作原理及各個模組之間的流程關係有一個基本

Linux基礎

har jid work 區號 linu watch worker eof -1 一、系統監控 1.用top命令實時監測CPU、內存、硬盤狀態 效果類似Windows的任務管理器,默認每5秒刷新一下屏幕上的顯示結果。 [[email protected]/*

mysql基礎用戶權限管理和root密碼恢復

mysqlmysql用戶由用戶和主機名組成,[email protected]/* */,mysql的用戶和權限信息存儲在mysql庫中 mysql數據庫表: user #用戶賬號、全局權限 db #庫級別權限 host #主機 tables_priv

mysql基礎之索引

name 根據 正是 而不是 方案 加速 .com mtab 技術 索引簡介: 1、普通索引   普通索引(由關鍵字KEY或INDEX定義的索引)的唯一任務是加快對數據的訪問速度。因此,應該只為那些最經常出現在查詢條件 (WHEREcolumn=)或排序條件

JS基礎運算符

訪問 數據 js基礎 必須 減法 delete 異或 函數 按位與 一.比較運算符   1.== : 判斷兩邊值是否相等   2.>= : 判斷左邊的值是否大於或等於右邊的值   3.<= : 判斷左邊邊的值是否小於或等於右邊的值   4.> : 判斷

SQL基礎:SQL命令

版本 數據庫應用 ges odi 改變 sql per 測試 數據類型 1、CREATE INDEX 語句   CREATE INDEX 語句用於在表中創建索引。在不讀取整個表的情況下,索引使數據庫應用程序可以更快地查找數據。   索引:在表中創建索引,以便更加快速高效地查

MyBatis學習XML配置文件之SQL映射的XML文件

元素 數據庫 resultmap ash 有一點 oracl 解決 轉換成 插入語 SQL映射文件常用的元素:    1.select   查詢語句是MyBatis最常用的語句之一。   執行簡單查詢的select元素是非常簡單的: <select id=”sele

java並發基礎--- 取消與關閉

rime ole out sys 類型 interrupt 來看 方法 發出   《java並發編程實戰》的第7章是任務的取消與關閉。我覺得這一章和第6章任務執行同樣重要,一個在行為良好的軟件和勉強運行的軟件之間的最主要的區別就是,行為良好的軟件能很完善的處理失敗、關閉和取

3D數學基礎元數和歐拉角

transform 推薦 中間 應該 它的 轉變 編輯器 最簡 組件 一、四元數   四元數本質上是個高階復數,可視為復數的擴展,表達式為y=a+bi+cj+dk。在說矩陣旋轉的時候提到了它,當然四元數在Unity裏面主要作用也在於此。在Unity編輯器中的Transfor

計算機網絡基礎—交換機配置的簡單命令

交換機配置1、網絡設備的構成硬件:內存-RAM — 隨即讀取存儲器 CPU flash-硬盤 ROM — read only memory 只讀存儲器 nvram— 非易失性內存軟件: 系統文件 ---

計算機網絡基礎——數據鏈路層和網絡層協議設備

數據鏈路層 路由器 一、數據鏈路層 位於網絡層與物理層之間1、功能 -- 數據鏈路的建立、維護與拆除 --幀包裝、幀傳輸、幀同步 --幀的差錯恢復 --流量控制 2.以太網 -- 以太網工作在數據鏈路層。我們平常使用的局域網就是以太網。 --以太網采用CSMA/C

Kotlin基礎Lambda編程

構造 引用 元素 允許 其他 create text 顯示 tag Lambda編程 一、Lambda表達式和成員引用 一)Lambda表達式語法 1 //註意與Java8中的區別 2 val sum={ x:Int,y:Int -> x+y } 3

Java開發小技巧配置文件敏感信息處理

加載 gem 加密解密 -i false valid ges enc factory 前言 不知道在上一篇文章中你有沒有發現,jdbc.properties中的數據庫密碼配置是這樣寫的: jdbc.password=5EF28C5A9A0CE86C2D231A526ED5

Hadoop 框架基礎

釋放 top gem orien 系統啟動 -s blog 希望 記錄 ** Hadoop 框架基礎(四) 上一節雖然大概了解了一下 mapreduce,徒手抓了海膽,不對,徒手寫了 mapreduce 代碼,也運行了出來。但是沒有做更深入的理解和探討。 那麽…… 本節

路由交換基礎——ACL訪問控制列表

per not 由器 地址 同時 擴展 數據包 而不是 需要 一、ACL1.作用訪問控制列表(Access Control List),是路由器和交換機接口的指令列表,用來控制端口進出的數據包。ACL可以過濾網絡中的流量,是控制訪問的一種網絡技術手段。配置ACL後,可以限制