11

在 MVC 模式之前,我会简单地通过在 JS 的顶部包含这个来包含 UX 类,之前Ext.onReady

Ext.Loader.setConfig({enabled: true});
Ext.Loader.setPath('Ext.ux', 'extjs/examples/ux');
Ext.require([
    'Ext.ux.grid.FiltersFeature'
]);

现在我正在使用 MVC 模式,并且我有一个需要使用相同功能的网格面板。我在视图中包含了一个 requires 语句,如下所示:

Ext.define('ST.view.StudentLog', {
    extend: 'Ext.grid.Panel',
    alias: 'widget.studentlog',
    requires: [
        'Ext.ux.grid.FiltersFeature'
    ],

但是该应用程序在第一次开始加载时会产生 404 错误。

有任何想法吗?

编辑:

我尝试将相同的代码块放在视图顶部也无济于事(参考该Ext.Loader.setConfig / .setPath块)。

加载器不断尝试加载 UX 类,extjs/src/ux/无论我如何尝试告诉它。根据这个建议,我也尝试在我的应用程序控制器中定义一个路径属性,但似乎回答者在源代码中看到的任何内容在 4.1 rc3 中都不存在,因为我找不到它并且它不存在工作。

如果我只是将 FilterFeature.js 添加为带有<script>标签的 HTML 中的导入源文件,那么当我的应用程序启动时,它的所有依赖项都会出现 404 错误。

必须有一种简单的方法可以直接从 UX 文件夹将 UX 类包含在应用程序中,以便它可以链接到其他 UX 依赖项。

4

5 回答 5

14

好的,我从这篇文章中找到了它。

只需Ext.Loader.setPath在应用控制器顶部使用 call 即可,例如:

Ext.Loader.setPath('Ext.ux', 'extjs/examples/ux');
Ext.application({
    name: 'ST',
    autoCreateViewport: true,
    ...

或者你想把 ux 类放在哪里,为了浓缩,应用程序特定的 UX 类应该被拉出并放在你自己的文件夹中,就像app/ux帖子封面一样。

于 2012-04-25T07:03:46.367 回答
4

Extjs 6,使用 MVVC 和 sencha cmd。我使用 sencha generate 应用程序来启动一个应用程序。我编码到我想使用的点ItemSelector,修改了app.json需要在 中添加一个块ux

"requires": [
  "font-awesome",
  "ux"
],

在我想要创建ItemSelector小部件的控制器代码中:

requires: [
    'Ext.ux.form.MultiSelect',
    'Ext.ux.form.ItemSelector'
],

以及创建ItemSelector. 我遇到的一个问题是,它需要一个带有模型的真实数据存储,而我无法使用模拟数据。

然后我做了一个sencha app build

于 2016-04-14T17:32:43.670 回答
3

您可以将 Loader 参数组合在一起,使其易于阅读和理解应用程序/文件结构。我相信正在发生的事情是您缺少库文件和应用程序文件所在位置的定义——所有这些都与 app.js 相关。因此,当您加载时,应用程序会尝试使用基于主命名空间路径 (extjs/src) 的文件,而不是应用程序根目录。

Ext.Loader.setConfig({
    enabled : true,
    paths: {
        'Ext'    : 'extjs/src', // library src folder/files
        'MyApp'  : 'app',       // app namespace folder/files
        'Ext.ux' : 'ux'         // extension namespace folder/files
    }
});

同样的过程也适用于触摸——只需将“extjs”换成“触摸”。

如果使用 Architect,您需要选择 Application,添加一个 Loader(配置面板)。这将为 Loader 提供一个可以修改的路径对象。enabled选项是一个复选框选项,默认为 true 。

编辑:我没有说清楚的是,在大多数情况下不需要定义库源文件和应用程序文件,尤其是使用文件的默认布局。以下片段通常很充足:

Ext.Loader.setConfig({
    enabled : true,
    paths: {
        'Ext.ux' : 'ux'
    }
});
于 2013-07-18T01:10:43.093 回答
1

这听起来像是Ext.ux.grid.FiltersFeature文件所在路径的问题。您能检查导致 404 的请求的 URL 是什么吗?这应该会给你一个线索,让你知道在哪里放置Ext.ux.grid.FiltersFeature它以使其自动加载。

这是我正在使用的目录结构以及 ux 类所在的示例。

js
|---app.js
|
|---app
|    |---controller
|    |---model
|    |---store
|    +---view
|
+---ux
     |---form
     +---layout

基本上,命名空间将遵循目录结构。

于 2012-04-25T01:06:17.217 回答
0

在我的情况下(使用ux/DataTip.js),使用 ext-4.2.1.883 和 sencha cmd 4.0.2.67,我能够使用Ext.ux提供的解决方案的类,使用:

Ext.Loader.setPath('Ext.ux', 'extjs/examples/ux');

但是sencha app refresh抱怨:

[ERR] C2008:需求没有匹配的文件 (Ext.ux.DataTip)

应对/链接extjs/examples/uxextjs/src/ux解决我的问题。该应用程序有效,并且sencha cmd还能够跟踪事物。使用此复制/链接操作,无需使用Ext.Loader.setPath. 只需使用需求中的类:

Ext.define('Demo.Application', {
name : 'Demo',
requires : [ (...), 'Ext.ux.DataTip'],
于 2014-03-28T00:35:15.507 回答