0
我想通过Ember.js中的输入字段过滤模型的所有属性。如果在其中一个模型属性中找到文本字段输入,我想返回过滤结果。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"
}
]
过滤:
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
});
})
});
那么,有没有一种方法用一个命令(例如像项目获得所有属性。 get('allProperties'))?
感谢您的详细解答。不知何故,你的建议解决方案不适合我。在_hasOwnProperty_检查之前,关键变量不仅包含模型属性,还包含诸如“__debugInfo_”或“__internalModel_”之类的属性。在_hasOwnProperty_检查之后,该键甚至不包含模型属性。我没有用控制台日志检查它。有任何想法吗? –
检查此[twiddle](https://ember-twiddle.com/66477278e5e06bf328dd7aaaa8cc7bb6?openFiles=routes.application.js%2C)..可能是您可以发布路线模型挂钩。 – kumkanillam
我再次尝试使用您的代码,但这次密钥只包含属性“store”。我正在使用Ember Data存储来检索模型数据。查看此[twiddle](https://ember-twiddle.com/1065123730e9fe92a61eef81468b405b)以获取所有相关代码。 –