2

新しく生成された Sencha Touch 2 アプリケーションで Sencha Command Line 3 ツールを使用しています。

app.js ファイルが次のようになっていると仮定します。

Ext.application({
  name: "CA",
  event_code: "test123",
  launch: function() {
   console.log("application launched!");
  }
});

ビューとオブジェクト ストアは、「test123」に等しい CA.app.event_code に基づいて URL を生成することに依存しています。

ブラウザーでの開発中、すべてが正常に機能し、CA.app は必要な変数を返します。

アプリケーションを sencha app build でコンパイルし、縮小版をブラウザで実行しようとすると、次のようなエラーが発生します。

Error evaluating http://localhost:8888/app.js with message: TypeError: Cannot read property 'event_code' of undefined localhost:11

なぜこれが起こっているのか、どうすれば修正できるのか、完全にはわかりません。私はあらゆるアイデアや提案を受け入れます。正しい方向への指針は大歓迎です。

4

1 に答える 1

4

まったく同じ問題に遭遇しました。ビュー内の名前空間付きアプリにアクセスすることはできません...ビルド時ではなく、開発中に許可されるのは本当に残念です。とにかく、静的ヘルパー クラスを追加し、それをアプリ全体で使用することで、この問題を回避しました。

/app/util/Helper.js で:

Ext.define('MyApp.util.Helper', {
  singleton: true,
  alternateClassName: 'Helper',
  config: {
    foo: "bar",
    bat: "baz"
  },
  staticFunction: function() {
    // whatever you need to do...
  }
});

次に、ビューまたはコントローラーで:

Ext.define('MyApp.view.SomeView', {
  ...
  requires: ['Events.util.Helper'],
  ...
  someViewFunction: function() {
    var someValue = Helper.staticFunction();
    // and you can use Helper.foo or Helper.bat in here
  }
});

参考までに、Sencha Singletonsに関するドキュメントをいくつか示します。そして 1 つの重要な注意: Helper シングルトンが独自のファイルにあることを確認してください! 小さい場合は、app.js の一番下に配置する傾向があるかもしれません。最初は動作し、ビルド プロセスは動作しますが、コードは動作しません。心配はいりません。ビルド プロセスでは、すべての JS コードが 1 つの大きな圧縮ファイルにまとめられます。

于 2013-03-11T16:48:34.340 に答える