私はExtJSを使用していますが、「マジック」ストリングを使用して多くのチェックを行っています。ある種の列挙を使用したい、すなわち
Colors.Red、Colors.White
等
Extjsはこれをサポートしていますか?私はバージョン4.2を使用しています。
また、新しいクラスなどを作成する必要がある場合、これの正しい場所はどこにありますか?
私は現在持っています
/app
controller
store
models
views
etc
これらは特にコントローラー、ビュー、モデル、ストア用であるため、正しい場所ではないようです。
上記に当てはまらないものを作成するのに適した場所はどこですか?
これは別の方法で行うことができ、それはあなたにいくつかのインスピレーションを与えるためだけです。
私が自分のアプリで行ったことはenums
、自分のにフォルダーを作成することapp folder
です。このフォルダーには、アプリで使用するすべての列挙型を配置します。私が使用していることに注意してくださいalternateClassName
とuppercase
、それらをより列挙のようにします。
単なる列挙型:
Ext.define('MyApp.enums.Orientation', {
alternateClassName: ['ORIENTATION'],
statics: {
PORTRAITPRIMARY: 'portrait-primary', // The orientation is in the primary portrait mode.
PORTRAITSECONDARY: 'portrait-secondary', // The orientation is in the secondary portrait mode.
LANDSCAPEPRIMARY: 'landscape-primary', // The orientation is in the primary landscape mode.
LANDSCAPESECONDARY: 'landscape-secondary', // The orientation is in the secondary landscape mode.
PORTRAIT: 'portrait', // The orientation is either portrait-primary or portrait-secondary.
LANDSCAPE: 'landscape' // The orientation is either landscape-primary or landscape-secondary.
}
});
私はそれをこのように使うことができます:
MyApp.util.CordovaPlugins.lockOrientation(ORIENTATION.LANDSCAPE);
lockOrientation
このように見える場所:
/**
* Lock the viewport in a certain orientation and disallow rotation using the cordova screen orientation plugin
* See [github.com/gbenvenuti/cordova-plugin-screen-orientation](https://github.com/gbenvenuti/cordova-plugin-screen-orientation)
* for more details.
*
* Usage:
* MyApp.util.CordovaPlugins.lockOrientation(ORIENTATION.LANDSCAPE);
*
* Possible orientations:
* ORIENTATION.PORTRAITPRIMARY
* ORIENTATION.PORTRAITSECONDARY
* ORIENTATION.LANDSCAPEPRIMARY
* ORIENTATION.LANDSCAPESECONDARY
* ORIENTATION.PORTRAIT
* ORIENTATION.LANDSCAPE
*
* @param {Enum} orientation Value of type MyApp.enums.Orientation to orientate the view in the given orientation.
*/
lockOrientation: function(orientation) {
if (ORIENTATION.hasOwnProperty(orientation.toUpperCase())) {
screen.lockOrientation(orientation);
}
else {
Ext.Logger.error('The given orientation is not prohibited.');
}
}
別の列挙型:
Ext.define('MyApp.enums.PositionError', {
alternateClassName: ['POSITIONERROR'],
statics: {
PERMISSION_DENIED: 1,
POSITION_UNAVAILABLE: 2,
TIMEOUT: 3
}
});
使用法:
getGpsErrorTitleByErrorCode: function(errorCode) {
var title;
switch (errorCode) {
case POSITIONERROR.PERMISSION_DENIED:
title = 'PERMISSION_DENIED';
break;
case POSITIONERROR.POSITION_UNAVAILABLE:
title = 'POSITION_UNAVAILABLE';
break;
case POSITIONERROR.TIMEOUT:
title = 'TIMEOUT';
break;
default:
title: 'UNKNOWN_ERROR';
break;
}
return title;
}
列挙型uses
を使用するクラスの配列に列挙型を追加します。
Ext.define('MyApp.util.CordovaPlugins', {
uses: [
'MyApp.enums.PositionError',
'MyApp.enums.Orientation'
],
...
});
または、それらをグローバルに作成するためのrequires
配列app.js
:
Ext.application({
name: 'MyApp',
requires: [
'MyApp.enums.*'
],
...
});
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加