
Security News
TypeScript is Porting Its Compiler to Go for 10x Faster Builds
TypeScript is porting its compiler to Go, delivering 10x faster builds, lower memory usage, and improved editor performance for a smoother developer experience.
ember-array-contains-helper
Advanced tools
Ember helper to test the presence of an item in an array
This addon is not maintained
In recent Ember versions, you problem don't need an addon for this case. With the introduction of helper functions, you can just easily create a local helper that checks if an element is contained in an array.
If you want the helper to react to add/removals, you should be using some version of a "reactive" array. Either EmberArray
or TrackedArray
from tracked-built-ins. See demo here.
In any case, this addon should be compatible with basically every ember version from 3.28 to 5.x.
Ember template helper allowing to test if an array contains a particular element.
{{array-contains this.model 'value' property='title'}}
This helper allows to test the presence of a literal, a full object or a specific property/value of an object inside a given array. Objects can be native or Ember objects.
Before its version 2.x, this addon came with a polyfill (ember-runtime-enumerable-includes-polyfill
) emulating the native EcmaScript method includes
in case you wanted to run it within an environment that did not support this method.
Since its version 2.x, the polyfill is not included by default and this addon relies on the fact that it is run in an environment supporting the includes
method.
Errors will occur if it is not the case.
If you want to use this addon in an older browser or environment that does not support includes
, you must then now explicitely add the polyfill as a regular dependency: yarn add ember-runtime-enumerable-includes-polyfill
.
ember install ember-array-contains-helper
{{array-contains <array> <value> [property='<property>']}}
Where:
<array>
is the array to search into. Should be a valid not null array.<value>
is the value which is supposed to be contained in the arrray. Could be an object or a literal, null or undefined.<property>
is an option: if set, the search is done on the presence of an object containing a
property <property>
with the value <value>
. If not, the search is done of the presence of the full
<value>
(object or literal)This helper could be:
{{array-contains this.model 'value' property='title'}}
if
helper:
{{if
(array-contains this.model 'value' property='title')
'something'
'something else'
}}
Depending on the given parameters, the test is made on
// routes/application.js
import Route from '@ember/routing/route';
export default class ApplicationRoute extends Route {
model() {
return ['Akira', 'Blacksad', 'CalvinAndHobbes'];
}
}
{{! templates/application.hbs }}
{{array-contains this.model 'Akira'}}
// routes/application.js
import Route from '@ember/routing/route';
import Comic from '../models/comic';
let blackSad = Comic.create({
title: 'Blacksad',
});
let calvinAndHobbes = Comic.create({
title: 'Calvin and Hobbes',
});
let akira = Comic.create({
title: 'Akira',
});
export default class ApplicationRoute extends Route {
model() {
return [akira, blacksad, calvinAndHobbes];
}
setupController(controller) {
super.setupController(...arguments);
controller.calvinAndHobbes = calvinAndHobbes;
}
}
{{! templates/application.hbs }}
{{array-contains this.model this.calvinAndHobbes}}
property
:// routes/application.js
import Route from '@ember/routing/route';
import { inject as service } from '@ember/service';
export default class ApplicationRoute extends Route {
@service store;
model() {
return this.store.findAll('comic');
}
}
{{! templates/application.hbs }}
{{array-contains this.model 'Blacksad' property='title'}}
null
and undefined
null
and undefined
are considered acceptable values for 'value' parameter.
until ember 2.9, null
and undefined
are both coerced to null
by the templating engine. The following
expressions are therefore both leading to check for the presence of a null
value inside the array:
{{array-contains collection null}}
{{array-contains collection undefined}}
ember 2.10 (glimmer) changed this behaviour. undefined
are then preserved and not coerced to null
anymore.
It could eventually break some apps relying on the initial behaviour but it has been considered as a fix since the first behaviour was accidental. See this issue for details.
git clone https://github.com/bmeurant/ember-array-contains-helper
cd ember-array-contains-helper
npm install
npm install
ember server
npm run lint:js
npm run lint:js -- --fix
ember test
– Runs the test suite on the current Ember versionember test --server
– Runs the test suite in "watch mode"npm test
– Runs ember try:each
to test your addon against multiple Ember versionsember build
This addon uses YUIDoc via ember-cli-yuidoc. yuidoc-ember-cli-theme makes it pretty.
Docs generation is enabled in development mode via ember build
or ember serve
with or without --docs auto refresh option. It can also be explicitely generated with ember ember-cli-yuidoc
command.
For more information on using ember-cli, visit https://www.ember-cli.com/.
FAQs
Ember helper to test the presence of an item in an array
The npm package ember-array-contains-helper receives a total of 3,129 weekly downloads. As such, ember-array-contains-helper popularity was classified as popular.
We found that ember-array-contains-helper demonstrated a not healthy version release cadence and project activity because the last version was released a year ago. It has 2 open source maintainers collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Security News
TypeScript is porting its compiler to Go, delivering 10x faster builds, lower memory usage, and improved editor performance for a smoother developer experience.
Research
Security News
The Socket Research Team has discovered six new malicious npm packages linked to North Korea’s Lazarus Group, designed to steal credentials and deploy backdoors.
Security News
Socket CEO Feross Aboukhadijeh discusses the open web, open source security, and how Socket tackles software supply chain attacks on The Pair Program podcast.