5

我正在尝试使用 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.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();
        }

    });

索引.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>
4

1 回答 1

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中的视图本身,并且您使用要求:'MyApp.store.Users'班上。否则您将收到奇怪的错误,因为视图将在存储之前初始化。

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

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

于 2012-02-14T18:38:20.287 回答