我即将在我的cordova项目中添加一些插件。 但是,Cordova项目是由Sencha Touch 2生成的。
所以,如果我在cordova下添加了一个插件,
如何在Sencha Touch代码中获取cordova插件的参考?(因为Sencha Touch代码是一层ABOVE cordova的插件)
我不应该触摸生成的cordova代码,因为每当我使用Sencha Touch CMD命令重新生成cordova项目时它都会被替换。
更新
我想通过一个场景澄清我的问题:
例如,我想在Sencha Touch代码中使用相机,但是使用Cordova插件可以访问移动电话中的本机资源。 当运行Sencha Touch命令生成Cordova项目时,cordova文件夹下的所有代码都将被覆盖,因此无法在cordova文件夹下进行编码,这就是为什么所有编码都必须在Sencha Touch级别完成。
因此,问题变成了 - >如果插件位于cordova的范围内,这意味着对cordova插件的访问超出了Sencha Touch的范围,我怎样才能访问sencha触摸代码中的摄像头。
为了更清楚,这里是包含Cordova项目的Sencha Touch项目的结构:
Root folder for Sencha Touch Project
-app
-cordova
-plugins
-...
所以你可以看到,插件在cordova文件夹下,所以我不知道如何获得相机插件的参考,如:
Ext.navigator.camera.function() (like this?)
在Sencha Touch代码中。
我希望我的解释对你有用。
谢谢。
答案 0 :(得分:0)
Cordova插件在其清单(例如plugin.xml)中声明,使用clobbers
元素在浏览器运行时内公开功能。 target
属性值是添加到窗口对象的,可以在deviceready
事件触发后立即使用。
有关plugin.xml和clobbers的更多信息,请访问here。
答案 1 :(得分:0)
我在https://github.com/CaliLuke/NativeContacts/blob/master/app/view/Picture.js
找到答案为方便起见,这是代码。
/*
* File: app/view/Picture.js
*
* This file was generated by Sencha Architect version 2.0.0.
* http://www.sencha.com/products/architect/
*
* This file requires use of the Sencha Touch 2.0.x library, under independent license.
* License of Sencha Architect does not include license for Sencha Touch 2.0.x. For more
* details see http://www.sencha.com/license or contact license@sencha.com.
*
* This file will be auto-generated each and everytime you save your project.
*
* Do NOT hand edit this file.
*/
Ext.define('Contact.view.Picture', {
extend: 'Ext.Container',
alias: 'widget.contactpic',
config: {
height: 120,
minHeight: 100,
style: 'overflow: hidden',
ui: '',
layout: {
align: 'center',
type: 'vbox'
},
overflow: 'hidden',
tpl: [
'<img src="{picture}" width="160" />'
],
items: [
{
xtype: 'component',
html: ''
},
{
xtype: 'button',
bottom: 5,
itemId: 'mybutton',
right: 5,
iconCls: 'add',
iconMask: true
}
],
listeners: [
{
fn: 'onMybuttonTap',
event: 'tap',
delegate: '#mybutton'
}
]
},
onMybuttonTap: function(button, e, options) {
Ext.device.Camera.capture({
source: 'camera',
destination: 'file',
success: function(url) {
this.fireEvent('change', this, url);
},
failure: function() {
Ext.Msg.alert('Error', 'There was an error when acquiring the picture.');
},
scope: this
});
}
});