如何在 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)的中心坐标?

如何在sencha touch 2中获取当前活动的轮播项目

如何使用 Sencha Touch 2 获取表单面板和禁用选择字段

如何在Sencha Touch的Text字段中添加属性?

Sencha Touch 2 如何获取响应标头