🔧 This rule is automatically fixable by the --fix CLI option.
Note: this rule will not be added to the recommended configuration because it enforces an opinionated, stylistic preference.
| Name | Type |
|---|---|
order |
Array |
const rules = {
'ember/order-in-controllers': [
2,
{
order: [
'spread',
'controller',
'service',
'query-params',
'inherited-property',
'property',
'single-line-function',
'multi-line-function',
'observer',
'actions',
['method', 'empty-method'],
],
},
],
};If you want some of properties to be treated equally in order you can group them into arrays, like so:
order: [
['controller', 'service', 'query-params'],
'inherited-property',
'property',
['single-line-function', 'multi-line-function'],
];If you would like to specify ordering for a property type that is not listed, you can use the custom property syntax custom:myPropertyName in the order list to specify where the property should go.
You can find the full list of properties in property-order.js.
You should write code grouped and ordered in this way:
- Controller injections
- Service injections
- Query params
- Default controller's properties
- Custom properties
- Single line computed properties
- Multi line computed properties
- Observers
- Actions
- Custom / private methods
const {
Controller,
computed,
inject: { controller, service },
} = Ember;
export default Controller.extend({
// 1. Controller injections
application: controller(),
// 2. Service injections
currentUser: service(),
// 3. Query params
queryParams: ['view'],
// 4. Default controller's properties
concatenatedProperties: ['concatenatedProperty'],
// 5. Custom properties
attitude: 10,
// 6. Single line Computed Property
health: alias('model.health'),
// 7. Multiline Computed Property
levelOfHappiness: computed('attitude', 'health', function () {
return this.attitude * this.health * Math.random();
}),
// 8. Observers
onVehicleChange: observer('vehicle', function () {
// observer logic
}),
// 9. All actions
actions: {
sneakyAction() {
return this._secretMethod();
},
},
// 10. Custom / private methods
_secretMethod() {
// custom secret method logic
},
});This rule checks ordering only; it does not enforce indentation or other whitespace formatting.