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();
        }

    });

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>
4

1 に答える 1

3

アップデート

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();
    }

});

ビューとコントローラークラスで、ビューに関連付けられたストア(コンボボックスなど)があるかどうかを確認し、 initComponentでビュー自体にアイテムを追加し、 requires: 'MyApp.store.Users'を使用することがわかりましたクラス。または、ストアの前にビューが初期化されるため、奇妙なエラーが発生します。

Ext.Loader.require()Ext.Applicationの前に配置する必要があります。モデルとコントローラーをすべてセットアップしたら、ビューも追加します。

これで、jsb3 ファイルを作成するのに適した場所にいるはずです。モデル、ビュー、およびコントローラーがビルドのプロセスの一部になっていることがわかります。

于 2012-02-14T18:38:20.287 に答える