gpt4 book ai didi

ember.js - 如何在 emberjs RC 2 中使用带有嵌套路由/ Controller 的 "needs"

转载 作者:行者123 更新时间:2023-12-05 01:09:24 24 4
gpt4 key购买 nike

我有一个非常基本的路由设置,它允许我首先显示某个对象的“所有”记录。然后,如果用户选择一个下拉列表,他们可以使用日期对其进行过滤。

我最近升级到 RC2 并意识到“需要”已经取代或即将取代 controllerFor。

我很好奇如何在以下情况下使用“需求”,在这种情况下,我需要“records.date”的嵌套/内部路由,以便在选择日期时更改父“records”路由的内容。

下面缺少的是在 App.RecordsDateRoute 内部,我需要将“记录” Controller 的内容更改为一个新的过滤器(这次按日期),而我所做的一切似乎只是转储了 Handlebars 模板,什么也不显示 -即使我尝试使用简单的东西

this.controllerFor("records").set('content', App.Record.find(new Date(model.loaded)))

从 RecordsDateRoute 的 setupController 方法中
App.Router.map(function(match) {
return this.resource("records", { path: "/" }, function() {
return this.route("date", { path: "/:date_loaded" });
});
});

App.RecordsController = Ember.ArrayController.extend({
selected: 0,
dates: Ember.computed(function() {
return App.Date.find();
}).property()
});

App.RecordsIndexRoute = Ember.Route.extend({
model: function() {
this.controllerFor("records").set("selected", 0);
return App.Record.find();
}
});

App.RecordsDateRoute = Ember.Route.extend({
model: function(params) {
//the controllerFor below seems to be working great ... but what about needs?
this.controllerFor("records").set("selected", params.date_loaded);
return App.Date.create({ loaded: params.date_loaded });
}
});

最佳答案

使用 rc2,可以通过“controllers.controllerName”检索其他 Controller 的实例,在您的情况下,它将是 this.get('controllers.records') .

“needs”声明使引用 Controller 类似于导入对另一个 Controller 的引用;在您的情况下,日期 Controller 将是:

App.RecordsDateRoute = Ember.Route.extend({
needs: ['records'],
model: function(params) {
this.get("controllers.records").set("selected", params.date_loaded);
return App.Date.create({ loaded: params.date_loaded });
}
});

关于 App.Record.find(new Date(model.loaded)) , find() 需要一个 id 或一个对象,其键和值将用于过滤模型集合,但您给它一个 Javascript 日期。

您的意思是 App.Record.find(new App.Date(model.loaded)) ,或者像 App.Record.find({ loaded: model.loaded }) /* assuming it's already a Date */ ?

还有一个 initController(controller, model)路由中的方法调用,也许您可​​以使用它而不是“重载”具有太多职责的 model() 方法。 http://emberjs.com/api/classes/Ember.Route.html#method_setupController

关于ember.js - 如何在 emberjs RC 2 中使用带有嵌套路由/ Controller 的 "needs",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15822087/

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