js -过滤模型的所有属性
Ember.js - Filtering all properties of a model
我试图通过Ember.js中的输入字段过滤模型的所有属性。如果在其中一个模型属性中找到了文本字段输入,我希望返回过滤后的结果。
我已经有了一个工作的解决方案,但我想知道是否有更好的方法来过滤所有属性,而不是一个接一个地获得它们。我已经做了很多研究,但我找不到更好的方法来解决这个问题。以下是相关代码:
:
[
{
"source": "this is a source",
"title": "this is a title",
"message":"this is a message"
},
{
"source": "this is a source too",
"title": "this is a title too",
"message":"this is a message too"
}
]
<<p> 过滤器/strong>: export default Ember.Component.extend({
filterText: "", //Input field value
filteredArticles: Ember.computed('filterText', function () {
var filter = this.get('filterText').toLowerCase();
return this.get('model').filter(function (item) {
return item.get('title').toLowerCase().indexOf(filter) !== -1 ||
item.get('message').toLowerCase().indexOf(filter) !== -1 ||
item.get('source').toLowerCase().indexOf(filter) !== -1
});
})
});
那么是否有一种方法可以用一个命令获得所有属性(例如item.get('allProperties'))?
在所有Ember Object中getProperties
方法可用。
如果这不是一个烬对象,那么你可以使用Ember.getProperties
但是这些方法返回具有指定属性的对象,而不仅仅是您正在寻找的值。所以你的方法是正确的,只有当你在model
对象处理两个或三个属性。如果你认为你会得到更多的属性或动态地你会添加更多的属性模型对象,那么你可以在filter
回调中做对象迭代。
filterdText: Ember.computed('filterText',function(){
var filter = this.get('filterText').toLowerCase();
return this.get('model').filter((item,index) =>{
for(var key in item){
if( item.hasOwnProperty(key)){
if(item[key].toLowerCase().indexOf(filter) !== -1){
return true
}
}
}
return false;
})
})
相关文章:
- 使用导航属性创建Kendo UI网格模型的问题
- 将输入值设置为ng模型属性[Angular]时出现问题
- 如何使用Undercore和Backbone在HTML中表示模型属性
- 主干中的模型属性未定义
- ng重复中的ng模型-初始化唯一作用域属性
- sails.js beforeCreate方法只接收required设置为true的模型属性
- 如何使用javascript访问sails.js模型中的属性
- 如何更改与Backbone集合中的模型相关联的几个元素的css属性
- 从骨干集合筛选模型,然后为这些模型设置属性
- Ember.js:未在组件'中渲染的模型的计算属性;关于变更的参考
- 当ng repeat上的复选框具有必需的属性时,角度ng模型将变为未定义
- 将属性模型复制到剪贴板
- Backbone JS Promises在模型上设置属性之前解析
- 比较主干中的两个模型属性
- 在ember.js中访问模型之外的计算属性
- 如何在sails.js中更改属性模型中的日期格式
- 如何使用setVisible()方法设置json模型中元素的可见属性
- MVC6将视图模型列表属性分配给javascript变量
- 更新淘汰视图模型属性时激发更改事件
- angularJS + 猫鼬: 类型错误: 无法读取未定义的属性“模型”