从sencha sdk创建所有类

时间:2012-02-07 17:00:27

标签: extjs extjs4 extjs-mvc

我正在尝试使用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": []
}

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

“path”:“app /”,  “name”:“app.js”

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

应用程序/ 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>

1 个答案:

答案 0 :(得分:3)

<强>更新

我们无需将所有内容都包含在 app.js 中的 Ext.Loader()中。确保使用 Viewport 类传递 Ext.Loader()数组。仍然要确保使用正确的用途:要求:。这样你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();
    }

});

我发现在您的视图和控制器类中确保您的视图(例如组合框)附加了商店,您要在 initComponent <中向视图本身添加 / strong>并且您使用要求:'MyApp.store.Users'作为课程。或者,您将收到奇怪的错误,因为视图将在商店之前初始化。

Ext.Loader.require()必须放在 Ext.Application 之前。一旦你完成了模型和控制器的全部设置,你也会想要添加你的视图。

您现在应该处于创建jsb3文件的好地方,并且看到您的模型,视图和控制器现在是构建过程的一部分。