【问题标题】:creating all classes from sencha sdk从 sencha sdk 创建所有类
【发布时间】:2012-02-07 17:00:26
【问题描述】:

我正在尝试使用 sencha sdk 来生成我的缩小文件。

我的页面设置在

http://www.mysite.localhost/ext/jobs/index.html

仅从 index.html 读取数据并不容易。当我进入

sencha create jsb -a http://www.mysite.localhost/ext/jobs/index.html -p app.jsb3

我得到以下 jsb 文件。

{
    "projectName": "Project Name",
    "licenseText": "Copyright(c) 2011 Company Name",
    "builds": [
        {
            "name": "All Classes",
            "target": "all-classes.js",
            "options": {
                "debug": true
            },
            "files": []
        },
        {
            "name": "Application - Production",
            "target": "app-all.js",
            "compress": true,
            "files": [
                {
                    "path": "",
                    "name": "all-classes.js"
                },
                {
                    "path": "",
                    "name": "app.js"
                }
            ]
        }
    ],
    "resources": []
}

即它不包括我的所有课程。如果我更新

"路径": "app/", “名称”:“app.js”

app-all.js 已正确创建。但是我怎样才能得到控制器和视图。有很多文件。有没有人有任何示例 mvc 应用程序 jsb。我的应用程序基于潘多拉。

app/app.js

    Ext.Loader.setConfig({ enabled: true });
    Ext.application({

        name: 'Pandora',
        models: ['Part', 'Material', 'Job', 'Process', 'Invoice', 'InvoiceDetail', 'PurchaseOrder'],
        stores: ['SalesContact', 'Parts', 'Materials', 'Jobs', 'AccountHandlers', 'JobTypes', 'Processs', 'Artwork', 'Varnish', 'VarnishType', 'PrintType', 'ProofRequired', 'InvoiceDetails', 'PurchaseOrders'],
  controllers: ['Part', 'Material', 'Job', 'Process', 'Invoice'],
        launch: function () {

            Ext.QuickTips.init();
            var cmp1 = Ext.create('App.view.Jobs', {
                renderTo: "form-job"
            });
            cmp1.show();
        }

    });

index.html

<html>
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    <script type="text/javascript" src="ext-all-debug.js"></script>
    <script type="text/javascript" src="app/app.js"></script>
</head>
<body>
    <div id="form-job"></div>
</body>
</html>

【问题讨论】:

  • 我自己现在也有同样的问题。我缺少我的用户体验、控制器和视图。它设法找到我的商店和模型。就是这样。我正在寻找 requires: 属性如何在视口中发挥作用。您将一组视图传递给它,然后人们会用它来推断控制器。

标签: extjs extjs4 extjs-mvc


【解决方案1】:

更新

我们无需在 app.js 中包含 Ext.Loader() 中的所有内容即可完成这项工作。确保通过 Viewport 类传递 Ext.Loader() 数组。仍然要确保你做正确的uses:requires:。这样你 jsb3 文件的最终输出就包含了所有内容。

我设法解决了这个问题。我需要在我的 app.js 文件中使用 Ext.Loader()。一般的想法是你需要告诉加载器你的源文件在哪里。确保您的类文件包含在构建中。基于上面的 app/app.js 代码。

Ext.Loader.setConfig({ enabled: true });

// SDK builder required source files, use the class names.
Ext.Loader.require(['Pandora.view.Viewport']);

Ext.application({

    name: 'Pandora',
    models: ['Part', 'Material', 'Job', 'Process', 'Invoice', 'InvoiceDetail', 'PurchaseOrder'],
    stores: ['SalesContact', 'Parts', 'Materials', 'Jobs', 'AccountHandlers', 'JobTypes', 'Processs', 'Artwork', 'Varnish', 'VarnishType', 'PrintType', 'ProofRequired', 'InvoiceDetails', 'PurchaseOrders'],
    controllers: ['Part', 'Material', 'Job', 'Process', 'Invoice'],
    launch: function () {

        Ext.QuickTips.init();
        var cmp1 = Ext.create('App.view.Jobs', {
            renderTo: "form-job"
        });
        cmp1.show();
    }

});

我发现,在您的视图和控制器类中,请确保您的视图绑定了商店(例如组合框),您将在 initComponentitems 添加到视图本身/strong> 并且您对课程使用 requires: 'MyApp.store.Users'。否则你会收到奇怪的错误,因为视图会在存储之前初始化。

Ext.Loader.require() 必须放在Ext.Application 之前。使用模型和控制器完成所有设置后,您还需要添加视图。

您现在应该可以创建您的 jsb3 文件,并看到您的模型、视图和控制器现在是构建过程的一部分。

【讨论】:

  • 其他一些有用的提示Using the SDK tools
  • 太好了,谢谢。明天我将举行另一场会议。我会发布我的发现。
  • 总是乐于提供帮助。如果确实有帮助,请不要忘记将答案视为有用。我们自己应该有另一场会议,专注于 sencha sdk 和这个主题。
  • 另一件值得添加的事情是,如果您在应用程序上进行了身份验证,那么在大多数情况下,您会希望在生成文件时禁用它。当我想重新生成我的所有类文件列表时,我在 localhost 和 PhantomJS/1.1.0 用户代理上进行检测以自动禁用我的文件
  • 必须说SDK工具启动和运行有点尴尬。我不得不多次深入研究源代码来锻炼奇怪的行为。我希望他们开源 SDK,因为我对代码进行了一些更改,以便在构建同一应用程序的多个版本时提供帮助。另外,我们可以帮助记录它是如何工作的。听起来像是近期的主题博文!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-05-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-12-08
  • 1970-01-01
相关资源
最近更新 更多