如何在 Sencha Touch 代码中获取 Cordova 插件的参考
Posted
技术标签:
【中文标题】如何在 Sencha Touch 代码中获取 Cordova 插件的参考【英文标题】:how to get reference of cordova's plugins in Sencha Touch code 【发布时间】:2014-05-09 16:53:16 【问题描述】:我即将在我的 cordova 项目中添加一些插件。 但是cordova项目是由Sencha Touch 2生成的。
所以如果我在cordova下添加了一个插件,
如何在 Sencha Touch 代码中获取 cordova 插件的引用?(因为 Sencha Touch 代码是cordova 插件的上一层)
而且我不应该触摸生成的cordova代码,因为每次使用Sencha Touch CMD命令重新生成cordova项目时,它都会被替换。
更新
我想通过给出一个场景来澄清我的问题:
例如,我想在 Sencha Touch 代码中使用摄像头,但是通过使用 Cordova 插件来访问手机中的原生资源。 并且在运行Sencha Touch命令生成Cordova工程时,cordova文件夹下的所有代码都会被覆盖,所以cordova文件夹下的编码不能进行,所以所有的编码都必须在Sencha Touch级别进行。
因此,问题就变成了->如果插件在cordova的范围内,我如何才能访问sencha touch代码中的相机,这意味着cordova插件的访问超出了Sencha Touch的范围。
为了更清楚,这里是一个包含 Cordova 项目的 Sencha Touch 项目的结构:
Root folder for Sencha Touch Project
-app
-cordova
-plugins
-...
如您所见,插件位于 cordova 文件夹下,所以我不知道如何获取相机插件的参考,例如:
Ext.navigator.camera.function() (like this?)
在 Sencha Touch 代码中。
希望我的解释对你有意义。
谢谢。
【问题讨论】:
为什么没有人评论我的问题?我的问题有什么问题吗???欢迎大家指正、指正。 刚刚改写了我的问题,希望它能清楚地传达我的表达。 刚刚为这个问题添加了赏金,感谢您的帮助。 【参考方案1】:Cordova 插件在其清单(例如 plugin.xml)中使用 clobbers
元素声明功能如何在浏览器运行时中公开。 target
属性值是添加到窗口对象中的,可以在触发deviceready
事件后立即使用。
更多关于plugin.xml和clobbers的信息可以在here找到。
【讨论】:
您好弗拉德,感谢您的回复。我已经更新了我的问题以澄清我想要什么。请看一下,谢谢。 看看这个guide。该插件通常以window.clobberValue
的形式提供。
嗨弗拉德,很高兴在那里看到官方代码!但是,在那段代码之前,我认为应该有一些步骤来连接 Sencha Touch 和 Cordova 的 pulgin,否则我们无法获得相机的参考。例如。为了使用 cordova 插件,用户必须将插件文件路径添加到 app.js 或 app.json 或其他地方。所以这是我特别寻找的部分。希望我的解释对你有意义。谢谢你的帮助。
指南应该是完整的。还有这里描述的问题:***.com/questions/22457136/…
嗨,弗拉德,我查看了您的答案,比我的更详细,所以我决定将您的帖子设置为答案。谢谢【参考方案2】:
我在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" />'
],
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
);
);
【讨论】:
以上是关于如何在 Sencha Touch 代码中获取 Cordova 插件的参考的主要内容,如果未能解决你的问题,请参考以下文章
如何在 Sencha-Touch2.0 的地图中获取当前位置的标记
如何在sencha touch 2中获取地图(Ext.map)的中心坐标?