我正在编写Code School的Ember.js课程,他们首先在控制器中使用过滤器方法,解释控制器用于装饰模型.但是在接下来的部分中,他过滤了Route中的记录,将方法链接到’store.findAll’.
我对Ember比较新,所以这很令人困惑.在第一个例子中,我们有一系列产品,我们想要过滤,以检索一组onSale产品,以便在索引模板中发布.我们在索引路线上检索了模型:
App.IndexRoute = Ember.Route.extend({ model: function() { return this.store.findAll('product'); } });
然后,Route将产品发送到控制器,在那里我们可以装饰数据并将其减少到只有3个产品.
App.IndexController = Ember.ArrayController.extend({ onSale: function() { return this.filterBy('isOnSale').slice(0,3); }.property('@each.isOnSale') });
我明白这一点.但随后我们创建了一个指向’products / onsale’模板的链接,该模板将列出所有onsale产品.我们创建了一个ProductsOnsaleRoute,我们使用modelFor从ProductsRoute中提取父模型,然后我们继续在Route中过滤而不是创建ProductsOnsaleController并在那里过滤.对此有解释吗?
App.ProductsOnsaleRoute = Ember.Route.extend({ model: function() { return this.modelFor('products').filterBy('isOnSale'); } });
我想我的问题是……对我来说创建一个ProductsOnsaleController并在那里过滤会更好吗?
App.ProductsOnsaleController = Ember.ArrayController.extend({ sale: function() { return this.filterBy('isOnSale'); } }):
谢谢你的帮助!