EmberJS搜索商店

时间:2014-08-13 20:12:35

标签: javascript ember.js

我正在尝试编写一个搜索数据存储的小动作,该数据存储已经将数据加载到数据存储中。我希望能够通过字符串搜索,即名字。

这是我到目前为止的代码示例。 this.get()从搜索表单中获取值,我知道它从输入字段中获取了正确的值。

actions: {
    search: function() {
        return this.store.all('person', { firstName: this.get('firstName') });
    },
}

以下是模型:

App.Person = DS.Model.extend({
    firstName:      attr('string'),
    lastName:       attr('string'),
    email:          attr('string'),
});

当我执行此操作时,它只返回DS中的所有记录。

另外,单独的问题,但是Ember做了LIKE声明吗?让我们说第一个名字是斯坦利,我进入斯坦。它会检索斯坦利还是只查找完全匹配?

我无法通过谷歌或文档找到任何内容,我可能会以错误的方式表达问题。

提前致谢。

3 个答案:

答案 0 :(得分:1)

使用filter

var liveCollection = this.store.filter('foo', function(record){
  // if the bar property is baz include it in the collection
  return record.get('bar')=== 'baz'; 
});

所以对于你的情况来说,它是

search: function() {
    var fn = this.get('firstName');
    return this.store.filter('person', function(record){
       return record.get('firstName') === fn; 
    });
},

http://emberjs.com/api/data/classes/DS.Store.html#method_filter

答案 1 :(得分:0)

尝试使用查找而不是所有功能

return this.store.find('person', { firstName: this.get('firstName') });

答案 2 :(得分:0)

要在已加载的商店中搜索,您可以使用peekAll获取所有记录,然后使用findBy方法查找。这不会触发请求。

return this.store.peekAll('person').findBy('firstName', this.get('firstName'));