
Security News
High Salaries No Longer Enough to Attract Top Cybersecurity Talent
A survey of 500 cybersecurity pros reveals high pay isn't enough—lack of growth and flexibility is driving attrition and risking organizational security.
ember-fn-helper-polyfill
Advanced tools
This addon provides a polyfill for the {{fn}}
helper as described in
emberjs/rfcs#470.
ember-source
3.11 or higherember-source
v2.12, v2.16, v2.18, v3.4, v3.8, and v3.10 in CIember install ember-fn-helper-polyfill
The fn
helper allows you to ensure a function that you are passing off
to another component, helper, or modifier has access to arguments that are
available in the template.
For example, if you have an each
helper looping over a number of items, you
may need to pass a function that expects to receive the item as an argument
to a component invoked within the loop. Here's how you could use the fn
helper to pass both the function and its arguments together:
{{! app/templates/components/items-listing.hbs }}
{{#each @items as |item|}}
<DisplayItem @item=item @select={{fn this.handleSelected item}} />
{{/each}}
// app/components/items-list.js
import Component from '@glimmer/component';
import { action } from '@ember/object';
export default class ItemsList extends Component {
@action
handleSelected(item) {
// ...snip...
}
}
In this case the display-item
component will receive a normal function
that it can invoke. When it invokes the function, the handleSelected
function will receive the item
and any arguments passed, thanks to the
fn
helper.
Let's take look at what that means in a couple circumstances:
this.args.select()
the handleSelected
function will
receive the item
from the loop as its first and only argument.this.args.select('foo')
the handleSelected
function
will receive the item
from the loop as its first argument and the
string 'foo'
as its second argument.In the example above, we used @action
to ensure that handleSelected
is
properly bound to the items-list
, but let's explore what happens if we
left out @action
:
// app/components/items-list.js
import Component from '@glimmer/component';
export default class ItemsList extends Component {
handleSelected(item) {
// ...snip...
}
}
In this example, when handleSelected
is invoked inside the display-item
component, it will not have access to the component instance. In other
words, it will have no this
context, so please make sure your functions
are bound (via @action
or other means) before passing into fn
!
See also partial application.
See the Contributing guide for details.
This project is licensed under the MIT License.
FAQs
A polyfill for the fn helper provided by Ember in 3.11+
The npm package ember-fn-helper-polyfill receives a total of 1,003 weekly downloads. As such, ember-fn-helper-polyfill popularity was classified as popular.
We found that ember-fn-helper-polyfill demonstrated a not healthy version release cadence and project activity because the last version was released a year ago. It has 1 open source maintainer 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
A survey of 500 cybersecurity pros reveals high pay isn't enough—lack of growth and flexibility is driving attrition and risking organizational security.
Product
Socket, the leader in open source security, is now available on Google Cloud Marketplace for simplified procurement and enhanced protection against supply chain attacks.
Security News
Corepack will be phased out from future Node.js releases following a TSC vote.