Ember setupController hook in route disconnects model from template
我正在尝试在输入登录路径后立即设置控制器属性。目前,我正在使用方法 1,它依赖于控制器中的 init。它工作正常,但我的理解是在路由中使用 setupController 挂钩会更好。 Ember 数据显示已创建的记录,并在您键入时更新电子邮件和密码字段。
我尝试更改代码,在路由中使用 setupController 挂钩(方法 2),而不是依赖控制器中的 init。使用此方法,输入路由时会创建新记录,但在 Ember 数据中未定义电子邮件和密码,并且在键入时不会更新。
有没有办法在不断开模型的情况下仍然可以使用 setupController?
方法 1 - 工作
路由/login.js
1 2 3 | model: function() { return this.store.createRecord('authorisation'); }, |
控制器/login.js
1 2 3 | setPreLoginMessage: function() { this.set('preLoginMessage', 'Please enter your username and password.')); }.on('init'), |
模板/login.hbs
1 2 | {{input placeholder="Email" value=model.email}} {{input placeholder="Password" value=model.password}} |
方法 2 - 不工作
路由/login.js
1 2 3 4 5 6 7 | model: function() { return this.store.createRecord('authorisation'); }, setupController: function(controller, model) { controller.set('preLoginMessage', 'Enter your username and password')); }, |
模板/login.hbs
1 2 | {{input placeholder="Email" value=model.email}} {{input placeholder="Password" value=model.password}} |
您正在覆盖默认的
1 2 3 | setupController(controller, model) { controller.set('model', model); } |
所以你要么在你的
1 2 3 4 | setupController: function(controller, model) { super.setupController(...arguments); controller.set('preLoginMessage', 'Enter your username and password')); } |
一般来说,当你覆盖函数时,你应该总是考虑调用