更新:忘了提到我在版本中使用 Ember1.0.0-rc2
鉴于我有以下(非常简单的)Ember.View
对象:
App.AuthenticationLoginFormView = Ember.View.extend({
tagName: 'form',
classes: ['ajax-form']
}
Handlebars
在这样的模板中使用:
{{#view App.AuthenticationLoginFormView }}
<div class="ajax-form__row">
<label>
Account:<br/>
{{ view Ember.TextField valueBinding="controller.account" }}
</label>
</div>
<div class="ajax-form__row">
<label>
Username:<br/>
{{ view Ember.TextField valueBinding="controller.username" }}
</label>
</div>
<div class="ajax-form__row">
<label>
Password:<br/>
{{ view Ember.TextField type="password" valueBinding="controller.password" }}
</label>
</div>
<div class="ajax-form__row">
<a href="" class="ajax-form__reset-link" {{action "reset" }} >Reset</a>
<button class="ajax-form__button" {{action "login" target="controller"}} >Login</button>
</div>
{{/view }}
和一个Controller
看起来像的整个事情:
App.AuthenticationLoginController = Ember.Controller.extend({
account: null,
username: null,
password: null,
login: function() {
// if I call, for example, this.get('account') I get the correct value
}
});
正如我在代码示例中所写,我login
在表单提交时调用的函数中获得了“正确”值。但是如果我尝试中断transitionTo
相应Route
对象中的操作,控制器的所有值似乎都是null
:
App.AuthenticationLoginRoute = Ember.Route.extend({
events: {
reset: function(){
console.log(this.controller.get('account'); // <-- prints 'null'!
this.transitionTo('reset');
}
}
});
input
即使没有action
在控制器上执行,是否可以获得字段的值?如果是,我将如何实施?我是否需要为每个Ember.TextField
在 a 上触发的侦听器keyEvent
?