优化emberjs过滤器搜索
Optimizing emberjs filter search
我有一个简单的搜索输入,它通过一个html表中表示的api响应进行过滤。过滤效果很好,但出于某些原因,我觉得这是一种非常丑陋的方式。所以我想知道有什么更好的方法来做这件事。
这是我的控制器:
export default Ember.ArrayController.extend({
searchKeyword: null,
searchResults: function(){
var searchText = this.get('searchText');
if( ! searchText) return;
//YOUVE ALREADY GOT THE COMPANIES DONT GO BACK TO THE SERVICE
var companies = this.get('model');
var regex = new RegExp(searchText, 'i');
return companies.filter(function(company){
return company.name.match(regex);
});
}.property('searchText', 'model')
});
这是我的路线:
export default Ember.Route.extend(AuthenticatedRouteMixin, {
model: function(){
var adapter = AddressBookHomeAdapter.create();
var companies = adapter.findAll();
return companies;
}
});
这是我的适配器(我不使用Ember-Data):
export default Ember.Object.extend({
findAll: function(){
return ajax('http://localhost:8000/api/v1/companies')
.then(function(response){
return response.data;
});
}
});
这里是非常丑陋的(在我看来)html {{#each}}
:
{{#if searchResults}}
{{#each searchResult in searchResults}}
<tr>
<td>{{searchResult.name}}</td>
</tr>
{{/each}}
{{else}}
{{#each m in model}}
<tr>
<td>{{m.name}}</td>
</tr>
{{/each}}
{{/if}}
有没有办法让我直接过滤模型路由?所以我不需要必要的if语句?我还应该让这个组件正确吗?
你可以改变你的控制器,所以你总是返回所有的记录时,没有搜索项输入,只有filter
时,searchKeyword
有文本。然后在您的模板中,您可以删除if
语句和第二个each
。类似于下面的:
js:
export default Ember.ArrayController.extend({
searchKeyword: null,
searchResults: function() {
var searchKeyword = this.get('searchKeyword'),
companies = this.get('model');
if (Ember.isEmpty(searchKeyword)) return companies;
var regex = new RegExp(searchKeyword, 'i');
return companies.filter(function(company){
return company.name.match(regex);
});
}.property('searchKeyword', 'model')
});
hbs:
{{#each searchResult in searchResults}}
<tr>
<td>{{searchResult.name}}</td>
</tr>
{{/each}}
相关文章:
- 如何在较新版本的 Free-JQGard 中重置搜索工具栏和搜索过滤器
- Angular实现多搜索过滤器
- 如何在免费的jqGrid中获得onCellSelect中所选的搜索过滤器
- 如何忽略LDPA搜索过滤器中的多余空间
- 如何在搜索过滤器jQuerymobile中查找可见列表项的计数
- 使用KnockoutJS搜索过滤器
- jQuery/Datatables:在基本DataTable中包含许多不同的搜索过滤器类型和字段
- 在同一页面上的多个搜索框上动态应用 Jquery 中的搜索过滤器
- 角度:在包含外部数据的ng重复上搜索过滤器
- Angular.js,中的搜索过滤器
- PHP MySQL 和 AJAX 搜索过滤器延时
- AngularJS ngOptions 搜索过滤器 - 删除重复的选择选项
- Angular JS 搜索过滤器不会使用 Firebase 过滤数据
- 如何在 angularjs 中为特殊字符应用搜索过滤器
- AngularJS搜索过滤器在数组中进入对象
- 同位素搜索过滤器几乎想通了
- 搜索过滤器未重置 jquery 移动
- 弹性搜索搜索过滤器等于问题
- jQuery表在PHP生成的表上搜索过滤器
- 如何在键入时应用ajax/json搜索过滤器