按照此处的说明,为了使用本机 API,我需要在代码中添加一个“Ext.require()”。我如何在 Sencha Architect 2 中做到这一点?似乎自定义函数或事件之外的所有内容都是只读的,所以我不能只添加我自己的临时代码。
3 回答
正如 Bharat Nagwani 所建议的,Architect 现在包括一种方法来要求您希望动态加载的任何类。
几周前,我和 Luca Candela 在伦敦展示了一个小应用程序,演示了 Ext.device.Camera API 的使用。 https://github.com/CaliLuke/NativeContacts
为了在您的应用程序中包含设备 api,请执行以下操作:
- 进入 Sencha SDK 并将设备文件夹复制到您的项目目录中
- 在 Architect 中,单击 Application 节点
- 在配置面板中搜索“requires”
- 将“Ext.device.Camera”添加到需要的配置中
- 在配置面板中搜索“loader”
- 点击 Loader Config 右侧的 +
- 单击新添加的“Loader”节点(Application 的子节点)
- 添加路径 '{"Ext.device": "device/"}
所以总结一下,确保文件在那里。告诉应用程序您需要该类,然后告诉加载程序在哪里可以找到您刚刚放入项目文件夹的那些文件。
Architect 中的下一个更新需要作为 Application 节点上的属性,因此您可以在那里添加它。现在只需在您的应用程序启动功能中添加需求,因为它是可写的。
需要代码的视图(或适用的MVC)定义了这个需求,所以只在需要的时候调用。
Ext.define('MyApp.view.SomePageView', {
extend: 'Ext.Panel',
alias: 'widget.somepageview',
requires: [
'Ext.device.Camera', // requires go here!
'...'
]
对于本机需求(不是自定义扩展的东西),请查看 Sencha Docs 的右侧列。对于此示例,对于 ST2.3.1,它可以位于此处。在顶部,您可以看到 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 app build
使用 Sencha Cmd 等命令行调用。