3.0.0 • Published 4 years ago

ember-data-has-many-through v3.0.0

Weekly downloads
3
License
MIT
Repository
-
Last release
4 years ago

Ember-data-has-many-through

A small Addon to concatenate array of arrays, including promiseArrays / Ember Data hasMany relationships, it provides three macros:

  • concat allows to concatenate arrays of Ember Objects containing arrays.
  • hasManyThroughNonObject allows to concatenate hasMany relationships containing arrays.
  • hasManyThrough allows to concatenate hasMany relationships (or arrays of Ember Objects) containing hasMany relationships.

concat

This is the standard transposition of javascript's concat method to Ember arrays:

// models/parent.js
import DS from 'ember-data';
import concat from 'dummy/macros/concat';

export default DS.Model.extend({
  children: DS.hasMany('child'),
  // or any other Array of Ember Objects containing arrays
  filteredChildren: computed.filterBy('children', 'filterMe', true),
  concatArray: concat('filteredChildren', 'simpleArray')
});
// models/child.js
import DS from 'ember-data';

export default DS.Model.extend({
  filterMe: true,
  simpleArray: []
});

hasManyThroughNonObject

Given an Ember-Data parent model with a hasMany children relationship on a child model that has a simpleArray Ember array, then you can use the hasManyThroughNonObject computed property provided by this addon to concatenate all the simpleArray of child models into a single simpleArray property on the parent model.

// models/parent.js
import DS from 'ember-data';
import hasManyThroughNonObject from 'dummy/macros/has-many-through-non-object';

export default DS.Model.extend({
  children: DS.hasMany('child'),
  //concatenates each children's 'simpleArray' in to a single array
  simpleArray: hasManyThroughNonObject('children'),
});
// models/child.js
import DS from 'ember-data';

export default DS.Model.extend({
  simpleArray: []
});

hasManyThrough

Given an Ember-Data parent model with a hasMany children relationship on a child model that itself has a hasMany childrenOfChild relationship (or a childrenOfChildArray standard array), then you can use the hasManyThrough computed property provided by this addon to concatenate all the childrenOfChild of child models into a single childrenOfChild property on the parent model.

// models/parent.js
import DS from 'ember-data';
import hasManyThrough from 'dummy/macros/has-many-through';

export default DS.Model.extend({
  children: DS.hasMany('child'),
  // will concatenate the 'childrenOfChild' of each 'child' into a promiseArray CP
  childrenOfChild: hasManyThrough('children'),
  // if you want to name the property differently from the name given on the `children` hasMany property
  childrenOfChildren: hasManyThrough('children', 'childrenOfChild'),
  // this also works if the property on the 'child' model is an array (not a promise)
  childrenOfChildArray: hasManyThrough('children')
});
// models/child.js
import DS from 'ember-data';

export default DS.Model.extend({
  childrenOfChild: DS.hasMany('childOfChild'),
  childrenOfChildArray: []
});
// models/child-of-child.js
import DS from 'ember-data';

export default DS.Model.extend({});

See the test/dummy app for further details.

Installation

  • git clone this repository
  • npm install
  • bower install

Running

Running Tests

  • npm test (Runs ember try:testall to test your Addon against multiple Ember versions)
  • ember test
  • ember test --server

Building

  • ember build

For more information on using ember-cli, visit http://ember-cli.com/.

3.0.0

4 years ago

2.0.0

4 years ago

1.0.10

5 years ago

1.0.9

7 years ago

1.0.8

7 years ago

1.0.7

7 years ago

1.0.6

7 years ago

1.0.5

7 years ago

1.0.4

7 years ago

1.0.3

7 years ago