Ember.js Ember.Templates.helpers fn() 方法
Ember.js 是一个开源的JavaScript框架,用于开发基于模型-视图-控制器(MVC)架构的大型客户端Web应用程序。 Ember.js 是最常用的前端应用程序框架之一。它旨在加快开发速度并提高生产力。目前,它被许多网站使用,包括Square、Discourse、Groupon、Linked In、Live Nation、Twitch和Chipotle等等。
fn() 方法用于确保您传递给另一个组件或助手的函数可以访问在模板中可用的参数。
语法:
<SomeComponent @args={{fn this.function args }} />
参数:
- this.function: 这是我们要确保参数传递给的函数。
- args: 这是传递给函数的参数。
安装和运行Ember.js的步骤:
步骤1: 要运行以下示例,您需要拥有一个Ember项目。要创建一个项目,您需要首先安装ember-cli。在终端中写入以下代码:
npm install ember-cli
步骤2: 现在你可以通过输入以下代码来创建项目:
ember new <project-name> --lang en
要启动服务器,请输入:
ember server
示例1: 输入以下代码以生成此示例的路由:
ember generate route fn1
app/components/compact.js
import Component from '@glimmer/component';
import { tracked } from '@glimmer/tracking';
import { action } from '@ember/object';
export default class extends Component {
student = [{
"name": "Sam Snehil",
"age": 21
},
{
"name": "Satyam Sahu",
"age": 23
},
{
"name": "Sohan Argrwal",
"age": 25
},
{
"name": "Sreya Sarma",
"age": 19
}];
print(item) {
let ans = ''
item.map((student) => ans += student.name + ` is `
+ student.age + ' year old ' + '\n')
alert(ans);
}
}
app/components/compact.hbs
{{yield}}
<table>
<tr>
<th>Name</th>
<th>Class</th>
</tr>
{{#each this.student as |detail|}}
<tr>
<td>{{detail.name}}</td>
<td>{{detail.age}}</td>
</tr>
{{/each}}
</table>
<br/>
<input type="button"
id="set-code"
value="Introduction of Each Student"
{{on 'click' (fn this.print this.student)}}/>
app/templates/fn1.hbs
<Compact>
<h1>
List of Student :
</h1>
</Compact>
{{outlet}}
输出:

例2: 输入以下代码以生成此示例的路径:
ember generate route fn2
app/components/compact2.js
import Component from '@glimmer/component';
import { tracked } from '@glimmer/tracking';
import { action } from '@ember/object';
export default class extends Component {
food = [{
"food": "Banana",
"Quant": 5
},
{
"food": "Pine-apple",
"Quant": 2
},
{
"food": "Apple",
"Quant": 7
},
{
"food": "Mango",
"Quant": 4
}];
list(temp) {
let ans = temp.mapBy('food');
alert(ans.join('\n'))
}
}
app/components/compact2.hbs
{{yield}}
<table>
<tr>
<th>Food</th>
<th>Quantity</th>
</tr>
{{#each this.food as |detail|}}
<tr>
<td>{{detail.food}}</td>
<td>{{detail.Quant}}</td>
</tr>
{{/each}}
</table>
<br />
<input
type="button"
id="set-code"
value="List all Fruits"
{{on "click" (fn this.list this.food)}}
/>
app/templates/fn2.hbs
<Compact2 >
<h1>
List of Foods:
</h1>
</Compact2>
{{outlet}}
输出:

参考: https://api.emberjs.com/ember/4.4/classes/Ember.Templates.helpers/methods/fn?anchor=fn
极客教程