gpt4 book ai didi

javascript - 路由中的 Ember setupController Hook 断开模型与模板的连接

转载 作者:行者123 更新时间:2023-11-28 18:28:52 25 4
gpt4 key购买 nike

我试图在输入登录路由后立即设置 Controller 属性。目前,我正在使用方法1,它依赖于 Controller 中的init。它工作正常,但我的理解是最好在路由中使用 setupController Hook 。 Ember 数据显示已创建的记录,并且电子邮件和密码字段会在您键入时更新。

我尝试更改代码,在路由中使用 setupController Hook (方法 2),而不是依赖 Controller 中的 init。使用此方法,输入路线时会创建新记录,但 Ember 数据中未定义电子邮件和密码,并且在输入时不会更新。

有没有办法让我在不断开模型连接的情况下仍然可以使用 setupController?

方法 1 - 工作

路由/login.js

model: function() {
return this.store.createRecord('authorisation');
},

Controller /login.js

setPreLoginMessage: function() {
this.set('preLoginMessage', 'Please enter your username and password.'));
}.on('init'),

模板/login.hbs

{{input placeholder="Email" value=model.email}} 
{{input placeholder="Password" value=model.password}}

方法 2 - 不起作用

路由/login.js

model: function() {
return this.store.createRecord('authorisation');
},

setupController: function(controller, model) {
controller.set('preLoginMessage', 'Enter your username and password'));
},

模板/login.hbs

{{input placeholder="Email" value=model.email}} 
{{input placeholder="Password" value=model.password}}

最佳答案

您正在覆盖默认值 setupController功能是:

setupController(controller, model) {
controller.set('model', model);
}

所以你要么只在 setupController 中使用这一行也可以,或者,调用 super.setupController(...arguments); 更好。它将运行您的基类中的代码:

setupController: function(controller, model) {
super.setupController(...arguments);
controller.set('preLoginMessage', 'Enter your username and password'));
}

一般来说,您应该始终考虑调用super.<method name>()当您重写函数时。

关于javascript - 路由中的 Ember setupController Hook 断开模型与模板的连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38544134/

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