2016-01-21 59 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 
} 
相關問題