如何在Sencha Touch代码中获取cordova插件的参考

时间:2014-05-09 16:53:16

标签: javascript cordova sencha-touch cordova-plugins

我即将在我的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代码中。

我希望我的解释对你有用。

谢谢。

2 个答案:

答案 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
        });
    }

});