Ember.TextField valueBinding with keyUp Override

时间:2012-03-13 14:35:50

标签: ember.js

为什么在覆盖keyUp函数时没有TextField valueBind?这里的示例http://jsfiddle.net/z5SNW/3/。基本上,每当按下enter或用户单击按钮时,我都会警告TextField的值。问题是按下按钮不会显示实际值,直到您从文本字段中聚焦,然后单击按钮。

我可以通过将一个else放入keyUp函数并在那里设置值来破解它,但这对我来说似乎不对。我想我只是缺少一些非常简单的东西。

1 个答案:

答案 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/