gpt4 book ai didi

android - Sencha 触摸 2 : How to initialize controller of a package?

转载 作者:行者123 更新时间:2023-11-29 01:41:15 27 4
gpt4 key购买 nike

我在工作区中有一个 ST2.3 应用程序,它使用由一个 Controller 和两个 View 组成的包。我可以访问 View 而无需在 app.js 中引用它们而不会出现问题,但我无法访问 Controller 并且 Controller 不会捕获包 View 触发的事件。

我已经尝试通过在 app.js 中执行以下操作来引用 Controller :

controllers: [
'packageController', OR
'packageController@package.controller', OR
'package.controller.packageController'
...
]

无效果并抛出“找不到文件”错误。

工作区架构:

workspace/
touch/
...
STApp/
...
packages/
package1/
src/
view/
...
controller/
packageController.js

注意:该应用程序是为使用 Cordova 的原生 Android 设备打包的。

有什么想法吗?

***编辑:我在包的 sencha.cfg 中找到了这个,也许它是相关的,我必须以某种方式指定 Controller 文件夹? :

# This is the comma-separated list of folders where classes reside. These
# classes must be explicitly required to be included in the build.
#
package.classpath=${package.dir}/src

最佳答案

所以这可能是其中之一。

首先,确保您已在 app.js 中使用正确的命名空间/路径配置 Ext.Loader:

Ext.Loader.setConfig({
enabled : true,
paths : {
'Ext' : '../touch/src',

//assuming "Foo" is the namespace
'Foo' : '../packages/foo/src'
}
});

还要确保将您的包添加到 app.json 中的“requires”数组

requires : [
'Foo' //name of the package from /packages/foo/package.json
]

接下来,检查 packages/package1/src/controller/packageController.js 中定义的实际类的名称。 Sencha Cmd 可能有点挑剔......类名必须完全匹配文件名——事实上你有“packageController”作为文件名(在驼峰式)抛出一个红旗我。

所以一个真实的例子可能是 packages/foo/src/controller/Bar.js 你会在其中找到 Ext.define('Foo.controller.Bar', {} )


此时,您应该能够在 app.js 中使用以下内容:

Ext.application({
//...

controllers : [
'Bar@Foo.controller', //OR...
'Foo.controller.Bar'
]
});

最后,您还必须使用 Sencha Cmd 运行 sencha app refresh,这将重新生成您的 Bootstrap 文件。

在完成所有这些步骤后,在 Debug模式下运行您的应用程序,您应该会看到对 packages/foo/src/controller/Bar.js 的网络请求,并且(希望)它会加载到您的应用程序中。

关于android - Sencha 触摸 2 : How to initialize controller of a package?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24551434/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com