我正在尝试在这里实现一个搜索系统,但在 store.filter() 方面遇到了一些问题
首先我找不到任何好的文档store.filter()
除了这里之外的方法:http://emberjs.com/guides/models/frequently-asked-questions/
因此,我使用该页面上提供的示例作为指导。
这就是我的代码中的内容
App.ApplicationController = Ember.ObjectController.extend({
isDropdown: false,
actions: {
handle_search: function() {
var search_text = this.get('search_text');
if (search_text) {
this.set('isDropdown', true);
return this.store.filter('procedure', {proc_name: search_text}, function(procedure) {
console.log(procedure);
});
}
}
}
});
但是当我记录返回的内容时,它基本上返回每个模型。而不是没有结果或结果有限。
最重要的是procedure
它本身不是模型的对象,而是其他东西。
所以我的问题是如何获得带有字段的实际模型以及如何确保商店实际上正在过滤结果?
您只需要传入一个返回 true/false 的函数即可包含记录
App.IndexRoute = Ember.Route.extend({
model: function() {
return this.store.filter('color', function(item){
return item.get('color')=='red';
});
}
});
http://emberjs.jsbin.com/OxIDiVU/647/edit
如果您想同时回调服务器(通过查询查找),您可以包含可选的查询参数,下面的示例将调用/colors?color=green
App.IndexRoute = Ember.Route.extend({
model: function() {
return this.store.filter('color', {color:'green'}, function(item){
return item.get('color')=='red';
});
}
});
/**
Takes a type and filter function, and returns a live RecordArray that
remains up to date as new records are loaded into the store or created
locally.
The callback function takes a materialized record, and returns true
if the record should be included in the filter and false if it should
not.
The filter function is called once on all records for the type when
it is created, and then once on each newly loaded or created record.
If any of a record's properties change, or if it changes state, the
filter function will be invoked again to determine whether it should
still be in the array.
Optionally you can pass a query which will be triggered at first. The
results returned by the server could then appear in the filter if they
match the filter function.
Example
```javascript
store.filter('post', {unread: true}, function(post) {
return post.get('unread');
}).then(function(unreadPosts) {
unreadPosts.get('length'); // 5
var unreadPost = unreadPosts.objectAt(0);
unreadPost.set('unread', false);
unreadPosts.get('length'); // 4
});
```
@method filter
@param {String or subclass of DS.Model} type
@param {Object} query optional query
@param {Function} filter
@return {DS.PromiseArray}
*/
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)