为什么在覆盖keyUp函数时没有TextField valueBind?这里的示例http://jsfiddle.net/z5SNW/3/。基本上,每当按下enter或用户单击按钮时,我都会警告TextField的值。问题是按下按钮不会显示实际值,直到您从文本字段中聚焦,然后单击按钮。
我可以通过将一个else放入keyUp函数并在那里设置值来破解它,但这对我来说似乎不对。我想我只是缺少一些非常简单的东西。
答案 0 :(得分:7)
通过覆盖keyUp
,只有在change
事件被触发时(焦点丢失时)才会设置TextField的值,请参阅code。
如果您使用可用的insertNewline
来处理输入,则一切正常:http://jsfiddle.net/z5SNW/6/。
App = Ember.Application.create({});
App.TextField = Em.TextField.extend({
valueBinding: 'App.TextValue.value',
insertNewline: function() {
alert('Submitted: ' + App.TextValue.get('value'));
}
});
App.TextValue = Em.Object.create({
value: ''
});
App.SubmitButton = Em.Button.extend({
click: function() {
alert(App.TextValue.get('value'));
}
});
或者您保留keyUp
的实施方式(如果您计划对其他keyCode执行操作,但是您必须致电this.interpretKeyEvents(event);
,请参阅http://jsfiddle.net/z5SNW/8/。