在Angular和Breeze的SPA中加载

时间:2014-06-16 17:13:38

标签: javascript angularjs breeze plupload

我有一个使用角度和微风的SPA应用程序,允许现场人员创建新实体并实时提交给我们的ERP。他们可以拍照并上传它们(目前使用的是iPad,iPhone和Galaxy设备)。这一切都很好。

现在,我们希望在上传图片之前调整图片大小,以节省带宽,加快应用程序的速度,并且可以更轻松地将图片附加到电子邮件中。我有plupload(2.1.2)作为角度指令工作,它完美地调整/上传图像。问题是当创建新实体并且页面被重新加载时,plupload不再响应。我在输入字段中使用以下内容:

<input type="file"
capture="camera"
accept="image/*"
id="cameraInput"
pl-upload
pl-auto-upload="false"
pl-files-model="files"
pl-multi-params-model="multiParams"
pl-instance="uploadotron"
pl-entity="vm.report"
ng-file-select="vm.handleFile($files)"
ng-disabled="vm.state == 'Unchanged'" />

我用于plupload的选项是:

var options = {runtimes: 'html5', 
       browse_button : 'cameraInput',
       multi_selection: false,
       container: 'uploadcontainer',
       max_file_size: '20mb',
       multiple_queues: false,
       url : '.breeze/Files/Upload',
       flash_swf_url : iAttrs.plFlashSwfUrl,
       silverlight_xap_url : iAttrs.plSilverlightXapUrl,
       filters: [{title : "Image files", extensions : "jpg,jpeg,gif,png,tiff,pdf"}],
       resize: {
           width: 1024,
           height: 768,
           crop: false,
           quality: 90
    }
}

作为一种部分解决方法,我发现将一个实例对象(pl-instance =&#34; uploadotron&#34;上面,其中up​​loadotron附加到控制器中的$ scope)传递给指令允许我手动添加文件并触发上传,但这只会在iPad上每次尝试时触发ng-file-select。银河系正常运作。

所以问题是:

  1. 为什么在添加新实体时plupload会停止工作,以及如何修复它?我输入了大量的console.log语句并验证了当页面重新加载时,plupload的初始化似乎是通过指令发生的,但是浏览事件不再触发。如果我完全离开页面并返回,它会再次开始工作。但这并不完全是用户友好的。

  2. 为什么iPad(safari,iOS 7.1.1)只会在每个第二张照片/文件选择中调用ng-file-select功能?

  3. 感谢您提供任何帮助。

    更新

    我通过使用github(https://github.com/mailru/FileAPI/)上的FileAPI解决了我的问题,并编写了自己的指令来调用它。现在就像一个魅力。我认为问题的一部分是ng-file-select是不同指令的一部分,我没有马上意识到这一点。意思是我基​​本上在同一个输入元素中混合了两个指令。

0 个答案:

没有答案