Ember.js 是一个开源 JavaScript 框架,用于开发基于 Model-View-Controller (MVC) 架构的大型客户端 Web 应用程序。 Ember.js是使用最广泛的前端应用框架之一。它的目的是加速开发并提高生产力。目前,它被大量网站使用,包括 Square、Discourse、Groupon、Linked In、Live Nation、Twitch 和 Chipotle。
filterBy() 方法用于按属性和可选值过滤数组。
用法:
filterBy( key, value );
参数:
- key: 它是我们想要其值的属性的名称。
- value: 它是针对要检查的键的值。
返回值:过滤后的数组。
安装和运行 Ember.js 的步骤:
第 1 步:要运行以下示例,您需要有一个 ember 项目。要创建一个,您需要先安装ember-cli。在终端中写入以下代码:
npm install ember-cli
第 2 步:现在您可以通过输入以下代码来创建项目:
ember new <project-name> --lang en
要启动服务器,请键入:
ember serve
示例 1:键入以下代码以生成本示例的路由:
ember generate route filterBy1
应用程序/路线/filterBy1.js
import Route from '@ember/routing/route';
class student {
name = null;
gender = null;
class = null;
grade = null;
constructor(name, gender, class, grade) {
this.name = name;
this.gender = gender;
this.class = class;
this.grade = grade;
}
}
export default class StudentsRoute extends Route {
students = [
new student('Aakash', 'M', 10, 'P'),
new student('Soniya', 'F', 8, 'F'),
new student('Esnoor', 'M', 9, 'P'),
new student('Isha', 'F', 11, 'P'),
new student('Doman', 'M', 12, 'F'),
new student('Lolu', 'M', 10, 'P'),
new student('Satyam', 'M', 10, 'F'),
];
temp2;
temp;
model() {
return this.students;
}
setupController(controller, model) {
super.setupController(controller, model);
controller.set('students', this.students);
controller.set('temp', this.temp);
controller.set('temp1', this.temp1);
controller.set('temp2', this.temp2);
}
}
应用程序/控制器/filterBy1.js
import Ember from 'ember';
import { mapBy, every } from '@ember/array';
export default Ember.Controller.extend({
actions: {
Every_Failed() {
let foo = this.students.filterBy('grade', 'F');
let temp = '';
for (let i = 0; i < foo.length; i++)
temp += foo[i].name + '\n';
alert(temp);
},
Every_Female() {
let foo = this.students.filterBy('gender', 'F');
let temp = '';
for (let i = 0; i < foo.length; i++)
temp += foo[i].name + '\n';
alert(temp);
},
Every_male() {
let foo = this.students.filterBy('gender', 'M');
let temp = '';
for (let i = 0; i < foo.length; i++)
temp += foo[i].name + '\n';
alert(temp);
},
},
});
应用程序/模板/filterBy1.hbs
{{page-title "Student"}}
<h3>List of Students: </h3>
<br /><br />
<table>
<tr>
<th>Name</th>
<th>Gender </th>
<th>Class </th>
<th>Grade </th>
</tr>
{{#each @model as |detail|}}
<tr>
<td>{{detail.name}}</td>
<td> {{detail.gender}}</td>
<td>{{detail.class}}</td>
<td>{{detail.grade}}</td>
</tr>
{{/each}}
</table>
<br/>
<br/>
<div>
<input type="button"
id="check-pass"
value="Failed Student"
{{action 'Every_Failed' }} />
</div>
<br/>
<div>
<input type="button"
id="all-female"
value="All Female Student"
{{action 'Every_Female' }} />
</div>
<br/>
<div>
<input type="button"
id="all-male"
value="All Male Student"
{{action 'Every_male' }} />
</div>
{{outlet}}
输出:访问 localhost:4200/filterBy1 查看输出
Ember.js ArrayProxy filterBy 方法
示例 2:键入以下代码以生成本示例的路由:
ember generate route filterBy2
应用程序/路线/filterBy2.js
import Route from '@ember/routing/route';
export default class WebsitesRoute extends Route {
food = [
{
food: 'apple',
isFruit: true,
Bucket: '1',
},
{
food: 'Potato',
isFruit: false,
Bucket: '2',
},
{
food: 'Banana',
isFruit: true,
Bucket: '1',
},
{
food: 'Burgur',
isFruit: false,
Bucket: '2',
},
{
food: 'Orange',
isFruit: true,
Bucket: '1',
},
{
food: 'sandwitch',
isFruit: false,
Bucket: '2',
},
{
food: 'bean',
isFruit: false,
Bucket: '2',
},
];
temp;
model() {
return this.food;
}
setupController(controller, model) {
super.setupController(controller, model);
controller.set('food', this.food);
controller.set('temp', this.temp);
controller.set('temp2', this.temp2);
}
}
应用程序/控制器/filterBy2.js
import Ember from 'ember';
export default Ember.Controller.extend({
actions: {
Select(data1) {
let temp = this.food.filterBy('Bucket', data1);
let ans = '';
for (let i = 0; i < temp.length; i++) ans += temp[i].food + '\n';
alert(ans);
},
allFruit() {
let temp = this.food.filterBy('isFruit');
let ans = '';
for (let i = 0; i < temp.length; i++) ans += temp[i].food + '\n';
alert(ans);
},
nonFruit() {
let temp = this.food.filterBy('isFruit', false);
let ans = '';
for (let i = 0; i < temp.length; i++) ans += temp[i].food + '\n';
alert(ans);
},
},
});
应用程序/模板/filterBy2.hbs
{{page-title "filterBy"}}
<h3>List of Item in Buckets</h3>
<table>
<tr>
<th> Food Name </th>
<th>Bucket </th>
<th>Fruit </th>
</tr>
{{#each @model as |website|}}
<tr>
<td>{{website.food}}</td>
<td>{{website.Bucket}}</td>
<td>{{website.isFruit}}</td>
</tr>
{{/each}}
</table>
<br /><br />
<input type="button" id="all-Fruits"
value="All Fruit" {{action "allFruit"}} />
<br /><br />
<input
type="button"
id="BucketNo"
value="All items except fruits"
{{action "nonFruit"}}
/>
<br /><br />
<div>
<label>Enter Attribute Value: </label>
{{input value=this.temp2}}
</div>
<input
type="button"
id="all-Fruits"
value="All Fruit"
{{action "Select" this.temp2}}
/>
{{outlet}}
输出:访问 localhost:4200/filterBy2 查看输出
Ember.js ArrayProxy filterBy 方法
参考:https://api.emberjs.com/ember/2.14/classes/Ember.Array/methods/filterBy?anchor=filterBy
相关用法
- Embeer.js ArrayProxy filter()用法及代码示例
- Embeer.js ArrayProxy findBy()用法及代码示例
- Embeer.js ArrayProxy find()用法及代码示例
- Embeer.js ArrayProxy firstObject用法及代码示例
- Embeer.js ArrayProxy forEach()用法及代码示例
- Embeer.js ArrayProxy isDestroyed用法及代码示例
- Embeer.js ArrayProxy content用法及代码示例
- Embeer.js ArrayProxy cacheFor()用法及代码示例
- Embeer.js ArrayProxy objectAtContent()用法及代码示例
- Embeer.js ArrayProxy toString()用法及代码示例
- Embeer.js ArrayProxy replaceContent()用法及代码示例
- Embeer.js ArrayProxy removeObserver()用法及代码示例
- Embeer.js ArrayProxy destroy()用法及代码示例
- Embeer.js ArrayProxy insertAt()用法及代码示例
- Embeer.js ArrayProxy uniqBy()用法及代码示例
- Embeer.js ArrayProxy reduce()用法及代码示例
- Embeer.js ArrayProxy invoke()用法及代码示例
- Embeer.js ArrayProxy init()用法及代码示例
- Embeer.js ArrayProxy compact()用法及代码示例
- Embeer.js ArrayProxy set()用法及代码示例
- Embeer.js ArrayProxy unshiftObject()用法及代码示例
- Embeer.js ArrayProxy objectAt()用法及代码示例
- Embeer.js ArrayProxy addObject()用法及代码示例
- Embeer.js ArrayProxy getProperties()用法及代码示例
- Embeer.js ArrayProxy rejectBy()用法及代码示例
注:本文由纯净天空筛选整理自satyam00so大神的英文原创作品 Ember.js ArrayProxy filterBy() Method。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。