2016-08-04 9 views
0
var search = { 
    form: $('search-form'), 
    input: this.form.find('.search-input'), // 'this' undefined 
    callback: function(){ 
     console.log(this.form) // 'this' not undefined 
    } 
} 

お願いします。 申し訳ありませんが、私の英語はあまり良くありませんが、私は私の問題を説明しようとします。 this.formが定義されていないため、現在のオブジェクトのフォーム内で入力要素を選択できません。なぜそれは未定義ですか?オブジェクトのプロパティ値で 'this'を参照する方法は?

このコードで何が問題になっていますか?

input: this.form.find('.search-input') 

どうすれば上記のコードを修正できますか?

+0

オブジェクトは定義時に存在しないため、参照できません。 getterは解決策であるかもしれないし、 '$( 'search-form')'を書き直すだけかもしれません。 – Teemu

+1

'this'は' search'オブジェクトを含むコンテキストを参照します。オブジェクト自体ではありません。これらのオブジェクトを作成するファクトリメソッドはありますか? 'input'を設定することができますか? – ste2425

+2

'input'プロパティの使い方を表示する – Maxx

答えて

0

$('search-form').find('.search-input') - これを動作させる唯一の方法です。値を定義するとき、オブジェクトはまだ存在しないので、参照することはできません。あなたは、最初のオブジェクトを定義しようとし、その後、あなたが代わりに機能するinputプロパティを変更することができsearch.input = search.form.find('.search-input')

1

を追加することができます:結果を得るためにsearch.input()を使用して呼び出すその後

var search = { 
    form: $('search-form'), 
    input: function() { 
     return this.form.find('.search-input') 
    }, 
    callback: function(){ 
     console.log(this.form) // 'this' not undefined 
    } 
} 

関連する問題