2017-05-02 8 views
-1

私のajax APIコールの成功時にメソッドを呼び出そうとしています。私はローカル変数の中にこの(コンテキスト)を格納していますが、そのビューのコンテキストを取得できず、エラーを取得できません.setPdfUrlは関数ではありません。そして重要なことは、pub/subの仕組みでメソッドを呼び出すことです。あなただけの次の行を移動することができます.bind(this)を使用してapiの成功の下でメソッドを呼び出すことができません

Uncaught TypeError: that.setPdfUrl is not a function

+1

ガット・ソリューション - kf.Events.on( 'getPdfUrl'、this.getPdfUrl.bind(この)); –

+0

解決策を見つけたら、自分の質問に答えを書くことをお勧めします。コメントは、説明を求めることを目的としています。 –

+1

完了。私はstackoverflowに新しいです。途中でありがとう。 –

答えて

-1

を取得

kf.Events.off('getPdfUrl'); 
kf.Events.on('getPdfUrl', this.getPdfUrl); 

    getPdfUrl: function() { 
    var that = this; 
    $.ajax({ 
    url: kf.Settings.fileGeneratorUrl() + "/ikfc/singlereport", 
    type: 'POST', 
    data: { 
     //content 
    }, 
    success: function(result) { 
     that.setPdfUrl(kf.Settings.fileGeneratorUrl() + '/download?guid=' + 
     result.Message); 
    } 
    }); 

    }.bind(this), 

setPdfUrl: function(url){ 
    this.pdfUrl = url; 
    } 

- 私のコードは次のようになります。

getPdfUrl:function(){ var that = this;

var = this; getPdfUrl:function(){

これを実現するには複数の方法があります。今はこれを使うことができます。

0

私は初期化時にコンテキストを結合することによって解決策を持って -

kf.Events.on('getPdfUrl', this.getPdfUrl.bind(this)) 
初期のバインディングコンテキストによって
+0

'kf.Events.on'が[' Backbone.Events.on'](http://backbonejs.org/#Events-on)の場合、 'kf.Events.on'( 'getPdfUrl'、this .getPdfUrl、this) '。 –

+0

はい、kf.Events.onはBackbone.Events.onです。ありがとう、これは便利です。 –

+0

上記のコードが別のコンテキストで実行されていない限り、問題のコードがこれとどのように違うのか分かりませんが、問題のコードからは分かりません。要するに、この質問と答えは自分だけに役立ち、他の人には役立たないでしょう... –

関連する問題