javascript - Ember.js - 过滤模型的所有属性

标签 javascript ember.js filter

我正在尝试通过 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
    });
  })
});

那么有没有一种方法可以通过一个命令获取所有属性(例如 item.get('allProperties'))?

最佳答案

在所有 Ember 对象中 getProperties方法可用。

如果这不是 Ember 对象,那么您可以使用 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;
    })    
  }) 

关于javascript - Ember.js - 过滤模型的所有属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39986939/

相关文章:

google-sheets - 计算Google表格中每第n行单元格中出现的次数

数组中的 Javascript 过滤器对象

javascript - PHP - 如何从隐藏的输入类型和 $_POST 中获取名称到另一个 php?

javascript 使用 &lt;input type ="button"...> 而不是 <button ...>

jquery - 在 ember 应用程序中使用 jquery

ember.js - 使用带有 grunt-ember-templates 的预编译模板时如何实例化 Ember 应用程序

javascript - 使用下拉菜单选择在不同的 Google 图表之间进行更改

javascript - 在 express 中访问 Controller 的查询结果

ember.js - Ember 2 : Truncate text and add ellipses

SQL重新查询同一张表