AiDaRLING

导航

ionic项目之图片的选择与上传

由于ionic框架是基于AngularJS的,开发hybrid app混合应用的,但angularJS本身没有太多对移动设备硬件的支持,所以找到两种方法解决这个问题!

一,ngCordova插件:ngCordova是在Cordova Api基础上封装的一系列开源的AngularJs服务和扩展,让开发者可以方便的在HybridApp开发中调用移动设备的功能,即可以在AngularJs代码中访问设备的Api

二,html5plus:最近比较火的一个东西,也是为了解决有关html5移动app去调用移动设备功能的问题,但最最要命的就是它和AngularJs是完全分离的,两家的,所以基于angularJS的项目用html5plus去调移动设备的功能会有很多问题!

一,主要参考文章 http://haomou.net/2015/01/07/2015_ionic_fileOP/

                http://ngcordova.com/docs/plugins/

                https://github.com/driftyco/ng-cordova

                

1,(在此之前配置好ionic环境,安装好cordova,bower等)命令行进入到ionic项目下,安装ngcordova

命令行: bower install ngCordova

2,安装选择图片文件的插件

命令行: cordova plugin add https://github.com/wymsee/cordova-imagePicker.git

3,安装文件上传的插件

命令行: cordova plugin add org.apache.cordova.file

cordova plugin add org.apache.cordova.file-transfer

4,(安装完毕)修改index.xml文件(ng-cordova.js要放在cordova.js之前引入

,它们两个要放在ionic或angular的js文件之后引用)

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

<scriptsrc="cordova.js"></script>

5,注入ngCordova依赖

module

imagePicker方法

(返回的图片地址是file:///data/data/包名/cache/pic.jpg)


 

[javascript] view plain copy
 
 在CODE上查看代码片派生到我的代码片
  1. .controller('TodoCtrl', function($scope,<span style="color:#ff0000;">$cordovaImagePicker</span>) {  
  2.    
  3.   $scope.images_list = [];  
  4.     
  5.   
  6.   
  7.   // "添加附件"Event  
  8.   $scope.addAttachment = function() {  
  9.     nonePopover();  
  10.     $ionicActionSheet.show({  
  11.      buttons: [  
  12.        { text: '相机' },  
  13.        { text: '图库' }  
  14.      ],  
  15.      cancelText: '关闭',  
  16.      cancel: function() {  
  17.        return true;  
  18.      },  
  19.      buttonClicked: function(index) {  
  20.          
  21.        switch (index){  
  22.            
  23.         case 0:appendByCamera();  
  24.             break;  
  25.         case 1:  
  26.   
  27.         <span style="color:#ff0000;">pickImage();</span>  
  28.             break;  
  29.         default:  
  30.             break;  
  31.        }      
  32.        return true;  
  33.      }  
  34.    });  
  35.   }  
  36.     
  37.       
  38.        //image picker  
  39.    var pickImage = function () {  
  40.   
  41.               
  42.   
  43.             var options = {  
  44.                 maximumImagesCount: 1,  
  45.                 width: 800,  
  46.                 height: 800,  
  47.                 quality: 80  
  48.             };  
  49.               
  50.             $cordovaImagePicker.getPictures(options)  
  51.                 .then(function (results) {  
  52.                        
  53.                      $scope.images_list.push(results[0]);  
  54.                        
  55.                 }, function (error) {  
  56.                     // error getting photos  
  57.                 });  
  58.   
  59.         }     
  60.   
  61. })  


7,页面

 


 

[html] view plain copy
 
 在CODE上查看代码片派生到我的代码片
  1. <div class="list">  
  2.       <div class="item" ng-repeat="img in images_list">  
  3.        <img src="{{img}}" width="100%">  
  4.       </div>  
  5.     </div>   


总结:事实证明此方法效果比较完美,没什么问题,基于angularJS的项目选择ngCordova插件就对了

 

 

二,要想在自己的项目中用html5plus有两种方法(

 1,Android离线打包(http://ask.dcloud.net.cn/article/38)(最后导出apk报错,没找到问题)

 2,HBuilder新建html5plus项目,导入你工程的其他文件(导入我的ionic项目用到的文件)

 我用的第二种方法

1,获取图片的方法很简单(p是图片路径为本地图片的真实地址)

 

[javascript] view plain copy
 
 在CODE上查看代码片派生到我的代码片
  1. function appendByGallery() {  
  2.                     plus.gallery.pick(function(p) {  
  3.                           
  4.                                          $scope.images_list.push(p)  
  5.   
  6.                     });  
  7.                 }  



 

 

总结:由于angularJS有数据变化自动刷新的机制,所以当选择图片后回到主界面时,图片数组数据增加了,应该刷新图片界面但未刷新(不能显示新加的图片,必须点击部分部位才会刷新)(点击例如一些按钮,输入框后图片刷新出来,可能是由于用了html5plus后,破坏了angularJS的自动刷新的机制,点击按钮等又唤醒了它的机制,于是刷新)。

              所以暂时基于angularJS的项目,用html5plus去调移动设备的功能会有问题!

 

感谢 http://haomou.net/2015/01/07/2015_ionic_fileOP/ 很多知识从此博主的文章中获得

(建议最好按照步骤安装,此博主的demo我运行到手机总是报错,未找到原因,我的ionic项目可以正常运行,所以ionic和cordova的环境应该没什么问题)

 

项目地址http://download.csdn.net/detail/superjunjin/8417273

原项目来自于http://rensanning.iteye.com/blog/2072034

此项目是基于cordova环境的(请提前安装好cordova)

命令行找到项目目录,运行项目到真机 cordova run android(或创建apk cordova run android)

posted on 2016-05-09 17:21  AiDaRLING  阅读(111)  评论(0)    收藏  举报