こちらの手順に従って、ネイティブ API を使用するには、コードに「Ext.require()」を追加する必要があります。Sencha Architect 2 でそれを行うにはどうすればよいですか? カスタム関数またはイベントの外側はすべて読み取り専用のように見えるので、独自のコードをアドホックに追加することはできません。
3 に答える
Bharat Nagwani が提案したように、Architect には、動的にロードしたいクラスを要求する方法が含まれるようになりました。
Luca Candela と私は、数週間前にロンドンで Ext.device.Camera API の使用法を説明する小さなアプリケーションを発表しました。 https://github.com/CaliLuke/NativeContacts
アプリケーションにデバイス API を含めるには、次の手順を実行します。
- Sencha SDK に移動し、デバイス フォルダーをプロジェクト ディレクトリにコピーします。
- Architect 内で、[アプリケーション] ノードをクリックします。
- 設定パネルで「必須」を検索します
- 必要な設定に「Ext.device.Camera」を追加します
- 設定パネルで「ローダー」を検索します
- Loader Config の右側にある + をクリックします。
- 新しく追加された「ローダー」ノード (アプリケーションの子) をクリックします。
- パスを追加 '{"Ext.device": "device/"}
要約すると、ファイルがそこにあることを確認してください。そのクラスが必要であることをアプリケーションに伝えてから、ローダーに、プロジェクト フォルダーに配置したばかりのファイルの場所を伝えます。
Architect の次の更新では、Application ノードのプロパティとして require が提供されるため、そこに追加できます。今のところ、書き込み可能であるため、アプリケーション起動関数にrequireを追加するだけです。
The view (or the MVC applicable) that requires the code defines this requirement, so it is only called when it is needed.
Ext.define('MyApp.view.SomePageView', {
extend: 'Ext.Panel',
alias: 'widget.somepageview',
requires: [
'Ext.device.Camera', // requires go here!
'...'
]
For native requirements (things not a custom extension), check the right hand column on Sencha Docs. For this example, and for ST2.3.1, it can be located here. At the top, you can see Ext.device.Camera descends straight from Ext.Base and does not require Ext.device. At the bottom of that block of requirements being defined, there's the link for Camera.js. Opening that link, you can see exactly what is going on. By defining requires: ['Ext.device.Camera']
you are also automatically loading in all this requires to operate.
In Architect when you define a primary MVC or S, it is added to the Application Requires. So in Architect, I'll be able to see SomePageView listed under Application > Ext.app.Controller > views. During the build process this chain of requires down through the app will be included within the final package, whether using Architect's build, or a commandline call like sencha app build
using Sencha Cmd.