我目前正在尝试使用ember数据从firebase数据库中过滤数据。我希望在用户根据数据属性名称在搜索框中键入时过滤数据。
这是目前的模特:
import DS from 'ember-data';
export default DS.Model.extend({
name: DS.attr(),
requirements: DS.attr(),
skills: DS.attr()
});
这是目前的路线:
import Ember from 'ember';
export default Ember.Route.extend({
model() {
var obj = this.store.findAll('quest');
return obj;
}
});
当前的firebase数据库中填充了虚拟数据,但也具有使用push命令生成的自动生成的ID,不确定是否存在任何问题。我尝试使用路由器中的过滤器过滤数据,但没有成功,这是我第一次使用ember和firebase。谢谢。
编辑: 我创建了一个控制器来尝试过滤数据。数据通过动作传递给控制器,但我似乎无法实际解析数据。这是控制器代码:
import Ember from 'ember';
export default Ember.Controller.extend({
actions: {
filter() {
var model = this.get('model');
console.log(model);
this.toggleProperty('isExpanded');
}
}
编辑2: 我已经更新了控制器,可以正确搜索firebase数据库,但它没有正确读取我的搜索值。
import Ember from 'ember';
export default Ember.Route.extend({
model(params) {
var search = JSON.stringify(params.search);
console.log(search);
return this.store.query('quest', {
startAt: search,
orderBy: 'title',
limitToLast: 10
});
}
});
如果我将“startAt:search”行更改为硬编码行,则会正确过滤。有什么想法吗?
编辑3: 附加图像以显示加载时页面的外观,以及搜索的日志记录以显示其正在传递。 console on the load of the page 这是控制器中更新的代码:
import Ember from 'ember';
export default Ember.Controller.extend({
queryParams: ['search'],
search: ""
});
答案 0 :(得分:0)
您需要查看Query Parameters docs。
在路由和控制器文件中定义queryParams
属性以获取模型钩子中的值。
所以在route.js中定义queryParams
,如下所示
queryParams: {
search: {
refreshModel: true
}
}
并在控制器文件中
queryParams: ['search'],
search: null
如果您可以设置search
属性,那么start full transition