在路由器中过滤ember模型 [英] Filtering ember model in router
问题描述
我试图将模型商店返回到我的模板,但在我返回之前,我想通过某个属性过滤,只返回那些具有该属性的记录。此外,在我的模型中,我用一个序列化程序覆盖了默认的id。
I'm trying to return the model store into my template but before I do the return I would like to filter by a certain property, returning only those records that have that property. Also, in my model, I'm overriding the default 'id' with a serializer.
在我的控制台我得到一个商店没有定义ReferenceError:商店没有定义任何想法?
In my console I'm getting a "store is not defined ReferenceError: store is not defined" Any ideas ?
这是我的路线:
import Ember from 'ember';
import DS from 'ember-data';
export default Ember.Route.extend({
model: function() {
return this.store.find('link').then(function(links) {
return store.filter('link', { linkTypeCode: 'NSL' });
});
}
});
型号:
import DS from 'ember-data';
export default DS.Model.extend({
artifactId : DS.attr('number'),
artifactName : DS.attr('string'),
linkTypeCode : DS.attr('string')
});
推荐答案
您的路线正在呼叫
而不是 this.store
。由于这是异步回调,所以 this.store
也需要被缓存到变量中。
Your route is calling store
instead of this.store
. Since this is within an asynchronous callback, this.store
will also need to have been cached to a variable.
另外,一旦你解决这个问题,你会遇到你的过滤器的错误。过滤器需要一个函数。
Additionally, once you fix this you will encounter an error with your filter. The filter expects a function.
import Ember from 'ember';
import DS from 'ember-data';
export default Ember.Route.extend({
model: function() {
var Store = this.store;
return Store.find('link').then(function(links) {
return Store.filter('link', function (record) {
return record.get('linkTypeCode') === 'NSL';
});
});
}
});
我还会注意到 DS.filter
返回一个实时记录数组,这意味着记录始终保持最新与商店记录的记录。可以执行以下操作。
I would also note that DS.filter
returns a live record array, meaning it's records are always kept up-to-date with the records the store learns about. It would be possible to do the following.
Store.find('link');
return Store.filter('link', function (record) {
return record.get('linkTypeCode') === 'NSL';
});
这篇关于在路由器中过滤ember模型的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!