gpt4 book ai didi

ember.js - 我应该在 Ember.js 的 Route 或 Controller 中过滤记录吗?

转载 作者:行者123 更新时间:2023-12-04 12:08:25 24 4
gpt4 key购买 nike

我在 Code School 学习 Ember.js 类(class),他们首先在 Controller 中使用了 filter 方法,解释说 Controller 是用来装饰模型的。但在下一节中,他过滤了 Route 中的记录,将方法链接到“store.findAll”。

我对 Ember 比较陌生,所以这很令人困惑。在第一个例子中,我们有一个我们想要过滤的产品数组,以检索一个 onSale 产品数组以发布到索引模板中。我们在 Index Route 上检索模型:

App.IndexRoute = Ember.Route.extend({
model: function() {
return this.store.findAll('product');
}
});

然后 Route 将产品发送到 Controller ,在那里我们可以装饰数据并将其减少到只有 3 个产品。
App.IndexController = Ember.ArrayController.extend({
onSale: function() {
return this.filterBy('isOnSale').slice(0, 3);
}.property('@each.isOnSale')
});

我明白这一点。但随后我们创建了一个指向“产品/特价”模板的链接,该模板将列出所有特价产品。我们创建了 ProductsOnsaleRoute,我们使用 modelFor 从 ProductsRou​​te 中拉入父模型,然后我们继续过滤 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');
}
}):

谢谢你的帮助!

最佳答案

巧合的是,我今天正在和我的团队负责人谈论这个话题。他提出了一个非常有效的观点,即在路由级别过滤的问题在于它不是“绑定(bind)感知”的。

假设您决定对确定是否应显示项目的属性进行过滤。如果您在 Controller 级别进行过滤,则用户操作可能会从显示中删除项目。如果您的过滤是在 setupController 中完成的的路线,这是不正确的;您必须重新访问要删除的项目的路线。

关于ember.js - 我应该在 Ember.js 的 Route 或 Controller 中过滤记录吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22084486/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com