2011-08-12 11 views
0

を実行し、私は私の周り私の頭を取得することはできません。この奇妙な問題があります:私は(この問題の重要な)その中に3つの要素を持つオブジェクトを持っている二ほぼ同じ機能が異なり

を:

base_url: 'http://resttest.******.com/v1/', 
remind_url: function() { console.log(this.base_url); return this.base_url +'/member/passwordreminder/' }, 
login_url: function() { console.log(this.base_url); return this.base_url + '/member/login' }, 

彼らはオブジェクト内で次のようになります。

app.controllers.login = new Ext.Controller({ 
/** 
* @cfg url 
* Login request URL 
*/ 
base_url: 'http://resttest.******.com/v1/', 
remind_url: function() { console.log(this.base_url); return this.base_url +'/member/passwordreminder/' }, 
login_url: function() { console.log(this.base_url); return this.base_url + '/member/login' }, 

I remind_urlを呼び出すと、base_urlはそれが何であるべきか( 'http:// resttest。 ** .com/v1/')ですが、login_urlを呼び出すと、base_urlは未定義です。

なぜですか?

+2

どのように呼びますか? – Nicole

+1

質問にタグを入れないでください。理由のために別の「タグ」フィールドがあります。 – ThiefMaster

答えて

1

私はそれがthisの問題だと思っています。 base_urlが未定義の場合は、おそらくthisがオブジェクトではなくグローバルオブジェクトであるためです。そこにバインドしているものがありますかremind_urlthis

_.bindAll(this, 'remind_url, 'login_url', etc); 

thisへのコールバックと呼ばなっているすべてのメソッドをバインドします:たとえば、BACKBONE.JSでは、ビューは一般的に、このようなUnderscore.jsを使用して線を持っています。

これを確認するにはconsole.log(this.base_url)console.log(this)に変更して、この場合にはthisを見つけてください。

+1

あなたはおそらく理由については正しいかもしれませんが、そのうちの1つが既に機能していると考えると、これはおそらく適切な解決策ではありません。 – Nicole

+0

私はまだ自分の質問に答えることができません。なぜなら私はスコアが低すぎるからですが、私は問題の解決策を見つけました。正しい質問をしてくれたRenesisに感謝します。 私は関数としてではなくメソッドとしてコールを扱っていました - this.login_url = undefinedですが、this.login_url()はそうではありません。 –

+0

@Renesis私は言った "あなたにはこれにremind_urlをバインドしている何かがありますか?" - それは縛られていたかもしれないと思ったが、もう一つはそうではないと思った。しかし、明らかに解決策ではありませんでした! – Skilldrick

0

正しい質問をしてくれたRenesisに感謝します。

私は関数としてではなく、メソッドとしてコールを扱っていました - this.login_url = undefinedですが、this.login_url()はそうではありません。

関連する問題