如何在 Sencha Architect 2 中添加“Ext.require”

Posted

技术标签:

【中文标题】如何在 Sencha Architect 2 中添加“Ext.require”【英文标题】:How to add 'Ext.require' in Sencha Architect 2 【发布时间】:2012-05-09 15:56:47 【问题描述】:

按照here 的说明,为了使用本机 API,我需要在代码中添加一个“Ext.require()”。我如何在 Sencha Architect 2 中做到这一点?似乎自定义函数或事件之外的所有内容都是只读的,所以我不能只添加我自己的临时代码。

【问题讨论】:

【参考方案1】:

正如 Bharat Nagwani 所建议的,Architect 现在包含一种方法来要求您希望动态加载的任何类。

几周前,Luca Candela 和我在伦敦展示了一个小应用程序,演示了 Ext.device.Camera API 的使用。 https://github.com/CaliLuke/NativeContacts

为了在您的应用程序中包含设备 api,请执行以下操作:

进入 Sencha SDK 并将设备文件夹复制到您的项目目录中 在 Architect 中,单击应用程序节点 在配置面板中搜索“requires” 将“Ext.device.Camera”添加到所需配置中 在配置面板中搜索“loader” 点击Loader Config右侧的+ 单击新添加的“Loader”节点(Application 的子节点) 添加路径'"Ext.device": "device/"

所以总结一下,确保文件在那里。告诉应用程序您需要该类,然后告诉加载程序在哪里可以找到您刚刚放入项目文件夹的文件。

【讨论】:

【参考方案2】:

Architect 中的下一个更新需要作为应用程序节点上的属性,因此您可以在那里添加它。现在只需在您的应用程序启动函数中添加需求,因为它是可写的。

【讨论】:

我试过了,但我认为它不起作用。如果我尝试为我的应用程序刚刚中断的任何内容(即在 iphone 模拟器上)引用 Ext.device 命名空间。没有它,该应用程序就可以正常工作。你能提供更多信息吗?【参考方案3】:

需要代码的视图(或适用的MVC)定义了这个需求,所以只在需要的时候调用。

Ext.define('MyApp.view.SomePageView', 
    extend: 'Ext.Panel',
    alias: 'widget.somepageview',

    requires: [
        'Ext.device.Camera', // requires go here!
        '...'
    ]

对于原生需求(不是自定义扩展),请查看 Sencha Docs 的右侧栏。对于此示例,对于 ST2.3.1,它可以位于 here。在顶部,您可以看到 Ext.device.Camera 直接从 Ext.Base 下降,不需要 Ext.device。在定义的需求块的底部,有 Camera.js 的链接。打开该链接,您可以确切地看到发生了什么。通过定义requires: ['Ext.device.Camera'],您还可以自动加载所有这些操作所需的内容。

在 Architect 中,当您定义主 MVC 或 S 时,它被添加到 Application Requires 中。所以在 Architect 中,我将能够看到在 Application > Ext.app.Controller > views 下列出的 SomePageView。在构建过程中,无论是使用 Architect 的构建,还是使用 Sencha Cmd 的命令行调用(如 sencha app build),应用程序的这条需求链都将包含在最终包中。

【讨论】:

以上是关于如何在 Sencha Architect 2 中添加“Ext.require”的主要内容,如果未能解决你的问题,请参考以下文章

使用 Sencha Architect 2 配置控制器

将 Sencha Architect 项目从 Sencha Touch v2.0.x 更新到 Sencha Touch 2.1.x

Sencha Architect 中的背景图像

如何在 Sencha Architect 中动态设置 Ext.Img ->"src" 的值

在 Sencha Architect 中将 Ext.Menu 添加到视口

Sencha Architect 在本地设置 SDK 路径 - 初学者