2013-07-18 44 views
3

我在Ember中有一个简单的表单,它提交给服务器并返回响应。在失败的回复中,我想重新关注输入字段。有没有办法使用值绑定访问我的控制器中的字段?我如何才能访问作为jQuery元素的Ember输入?

这里是我的jsbin为例:

http://jsbin.com/umodir/1/edit

+0

我认为更简约的方式会在输入中放入一个id属性,然后在提交时调用$(“#somid”)。focus()。但这不是灰烬的方式...... –

回答

5

http://jsbin.com/efatut/2/edit

您的服务器返回的东西,你的设置控制器上的属性,你可以观察。我使它变得非常简单,称它为“错误”。

var App = Ember.Application.create(); 

App.ApplicationController = Ember.ObjectController.extend({ 
    error: false, 
    submit: function() { 
    alert('I want to set a focus on the email input field now...'); 
    this.set('error', true); 
    } 
}); 

App.ApplicationView = Ember.View.Extend({ 
    focusEmail: function() { 
    if (this.get('controller.error')) { 
     this.$('input[type=text]').focus(); 
    } 
    }.observes('controller.error') 
}); 

如果你想获得真正看中的,你可以使用一个像Ember.Component时{{eb-input focuson="error"}}控制器的“错误”属性改变,将自动对焦。

+0

这看起来像是很多额外的代码只是为了访问元素。 Ember中的最佳做法是只通过视图访问元素吗?似乎应该有一个更简单的方法。 – cavneb