Javascript 如何倾听;更改“;事件,同时也绑定到属性?

Javascript 如何倾听;更改“;事件,同时也绑定到属性?,javascript,ember.js,Javascript,Ember.js,我找不到同时侦听更改事件和绑定控制器中属性的方法!我可以做一件或另一件,但不能同时做两件 我的代码 //I am able to get change event this way - works good <input type="email" {{action "checkEmailAvailability" this on="change"}} class="form-control" placeholder="Email"/> //I can bind to a prope

我找不到同时侦听更改事件和绑定控制器中属性的方法!我可以做一件或另一件,但不能同时做两件

我的代码

//I am able to get change event this way - works good
<input type="email" {{action "checkEmailAvailability" this on="change"}} class="form-control" placeholder="Email"/>

//I can bind to a property this way - works good
{{input type="email" value=email class="form-control" placeholder="Email"}}

我必须能够监听更改事件,这样我就可以通过ajax调用检查此电子邮件地址是否可用于注册,并且必须(与观察员一起)监听电子邮件属性更改,这样我就可以“实时”验证电子邮件和电子邮件确认字段。

如果您需要使用非内置输入事件启动操作,您可以扩展TextField组件并启动操作:

App.PersonEmailComponent = Ember.TextField.extend({

 'change-action': null,

  change: function(evt) {

    this.sendAction('change-action', evt);

  } 
});


 {{person-email change-action='validateEmail'}}
默认情况下,输入辅助对象响应某些特定的视图事件(按键、focusOut、focusIn、insertNewLine、Enter),在这些事件被定义时触发其特定操作

{{input type="email" key-press="checkEmailAvailability" }}

绑定该值,然后生成一个观察该值的函数:

App.MyController = Ember.ObjectController.extend({
  email: null,

  checkEmailAvailability: function({
    var email = this.get('email')
    console.log("Email changed to: " + email);
  }).observes('email')
});

我希望收到更改事件的通知,因为我不希望向服务器发送大量请求(每个按键事件一个请求),以检查提供的电子邮件是否可用。你知道我该怎么做吗?谢谢,我要试试你的代码,然后我告诉你我能不能让它工作!嘿@aceofspades,这是我的代码,问题是知道用户何时停止编辑输入(html“更改”事件),所以你在做自动完成的事情?我会用一个JS定时器来实现这一点,它会在每次电子邮件更改时重置,并在延迟后触发。我认为这是一个丑陋的解决方法
App.MyController = Ember.ObjectController.extend({
  email: null,

  checkEmailAvailability: function({
    var email = this.get('email')
    console.log("Email changed to: " + email);
  }).observes('email')
});