Sencha Architect を使用して作成したモデルをサブクラス化したいです。既に作成した BaseModel というモデルがあり、BaseModel を拡張する MyModel という別のモデルを作成する必要があるとします。コードでは、次のようになります。
// BaseModel.js
Ext.define('MyApp.model.BaseModel', {
extend: 'Ext.data.Model',
fields: [...]
});
と
// MyModel.js
Ext.define('MyApp.model.MyModel', {
extend: 'MyApp.model.BaseModel',
fields: [...]
});
私は ExtJS と Sencha Architect を初めて使用しますが、これはコードで実行するのが非常に簡単で、適切なソフトウェア設計にとって非常に重要であるため、Architect でこれを行う方法があるに違いないと思います。残念ながら、これを簡単に行う方法がわかりませんでした。掘り下げた後、Sencha ドキュメント ( http://docs.sencha.com/architect/2/#!/guide/classes ) でこれを見つけました。「カスタム クラス」という見出しの下に次のように記載されています。
ここで説明する機能により、ツールボックスでサポートされているアイテムからクラスを作成できますが、単純な親のないクラス、またはツールボックスに表示されない別のクラスを拡張するクラスを作成する必要がある場合があります。ツールボックスのクラス項目を使用して、Architect でこれを行うことができます。
さて、有望に聞こえます—それで私はそれを試しました。プロジェクトインスペクターでプラス記号を押して「クラス」に移動し、その中で「モデル」をヒットしました。これで、プロジェクトにカスタム Model クラスができました。私はそれを呼び出しMyModel
、「拡張」構成を に設定しますMyApp.model.BaseModel
。したがって、少なくともコードは正しく、上記のようになります。MyModel
ただし、プロジェクトインスペクターの「モデル」セクションにあり、クラスが拡張されているにもかかわらず、アーキテクトはクラスがモデルであることを認識していないようBaseModel
です。MyModel
指定する必要がある「フィールド」などのモデル構成プロパティがまったくなく、どの種類のストアにも関連付けることができません。つまり、アーキテクトは、MyModel
完全なカスタム クラスとして、Model の動作を一切公開しません。基本的に、このサブクラス化の方法は完全に役に立たなくなります — モデルをサブクラス化することはできますが、それをプロジェクトのどこでもモデルとして使用することはできません。
問題は、Architect にMyModel
実際のモデルとして扱わせるにはどうすればよいかということです。これは Architect でサブクラス化する正しい方法ではありませんか? 私は自分のプロジェクトを始めたばかりですが、モデル、コントローラー、ストアなどであるかどうかにかかわらず、非常に頻繁にサブクラス化する必要があると予測しています.Architectでこれを行うことができない場合、それは深刻な制限です.