2016-01-21 58 views
0

我想将这些函数合并成一个函数,我可以传递两个属性,表单和字段。如何将这些函数合并到具有属性的单个函数中?

_last_name(){ 
    this.refs.patient.refs.input.refs.last_name.refs.input.focus() 
}, 
_phone(){ 
    this.refs.contact.refs.input.refs.phone.refs.input.focus() 
}, 
_email(){ 
    this.refs.contact.refs.input.refs.email.refs.input.focus() 
}, 
_street_address(){ 
    this.refs.contact.refs.input.refs.street_address.refs.input.focus() 
}, 
_suite_or_apt(){ 
    this.refs.contact.refs.input.refs.suite_or_apt.refs.input.focus() 
}, 
_city(){ 
    this.refs.contact.refs.input.refs.city.refs.input.focus() 
}, 
_state(){ 
    this.refs.contact.refs.input.refs.state.refs.input.focus() 
}, 
_zipcode(){ 
    this.refs.contact.refs.input.refs.zipcode.refs.input.focus() 
}, 

我已经试过这一点,但它似乎没有这样的伎俩:

_focus_on(form, field){ 
    this.refs.form.refs.input.refs.field.refs.input.focus() 
} 

我认为这只是一个语法问题。

+0

为了通过你需要使用“括号符号”名称存取权限一个对象的属性。所以'foo.bar'转换为'foo ['bar']'。现在,而不是“bar”,你可以传递一个变量。在你的情况下,它会是'this.refs [form] .refs.input.refs [field] .refs.input.focus()'。 –

回答

3

你已经差不多了。如果使用括号表示法(obj[field]),则可以使用变量访问对象的属性。

_focus_on(form, field) { 
    this.refs[form].refs.input.refs[field].input.focus(); 
} 
+1

打败我吧,谢谢! –

0

这似乎这样的伎俩:

_focusOn(form, field){ 
    this.refs[form].refs.input.refs[field].refs.input 
} 
相关问题