Ember.get
and Ember.set
use-ember-get-and-set
ember/use-ember-get-and-set: [2, {
ignoreThisExpressions: false,
}]
Setting ignoreThisExpressions
to true
allows use of this.get()
and this.set()
where you will generally know if this
is an Ember.Object
.
This way you don't have to worry whether the object that you're trying to access is an Ember.Object
or not. It also solves the problem of trying to wrap every object in Ember.Object
in order to be able to use things like getWithDefault
.
Ember tests use this.get()
and this.set()
as test helpers, so uses of them in the tests
directory will not be reported.
In addition, all files in the mirage
directory will be excluded from this rule.
This rule can be used with eslint --fix
to automatically fix some occurrences.
To be auto-fixed, Ember
must be imported.
Ideally, you should also be using local modules; otherwise, the fixed code will look like Ember.get(this, fooProperty')
instead of get(this, 'fooProperty')
.
// Bad
this.get('fooProperty');
this.set('fooProperty', 'bar');
this.getWithDefault('fooProperty', 'defaultProp');
object.get('fooProperty');
object.getProperties('foo', 'bar');
object.setProperties({ foo: 'bar', baz: 'qux' });
// Good
const {
get,
set,
getWithDefault,
getProperties,
setProperties
} = Ember;
// ...
get(this, 'fooProperty');
set(this, 'fooProperty', 'bar');
getWithDefault(this, 'fooProperty', 'defaultProp');
get(object, 'fooProperty');
getProperties(object, 'foo', 'bar');
setProperties(object, { foo: 'bar', baz: 'qux' });
## Use `Ember.get` and `Ember.set` ### Rule name: `use-ember-get-and-set` #### Configuration ``` ember/use-ember-get-and-set: [2, { ignoreThisExpressions: false, }] ``` Setting `ignoreThisExpressions` to `true` allows use of `this.get()` and `this.set()` where you will generally know if `this` is an `Ember.Object`. #### Description This way you don't have to worry whether the object that you're trying to access is an `Ember.Object` or not. It also solves the problem of trying to wrap every object in `Ember.Object` in order to be able to use things like `getWithDefault`. Ember tests use `this.get()` and `this.set()` as test helpers, so uses of them in the `tests` directory will not be reported. In addition, all files in the `mirage` directory will be excluded from this rule. This rule can be used with `eslint --fix` to automatically fix some occurrences. To be auto-fixed, `Ember` must be imported. Ideally, you should also be using [local modules](./local-modules.md); otherwise, the fixed code will look like `Ember.get(this, fooProperty')` instead of `get(this, 'fooProperty')`. ```javascript // Bad this.get('fooProperty'); this.set('fooProperty', 'bar'); this.getWithDefault('fooProperty', 'defaultProp'); object.get('fooProperty'); object.getProperties('foo', 'bar'); object.setProperties({ foo: 'bar', baz: 'qux' }); // Good const { get, set, getWithDefault, getProperties, setProperties } = Ember; // ... get(this, 'fooProperty'); set(this, 'fooProperty', 'bar'); getWithDefault(this, 'fooProperty', 'defaultProp'); get(object, 'fooProperty'); getProperties(object, 'foo', 'bar'); setProperties(object, { foo: 'bar', baz: 'qux' }); ```