2016-03-30 9 views
0

このようなjavascriptリクエストでは、フレームワークを再生するためにデータを渡し、別のpropertyKeyに基づいてイベントに異なるパラメータを設定する必要があります。Javascriptパラメータは、Playを使用して動的に変更します

私はこのようなことをします。

jsは複数のウィンドウで使用されます。したがって、this._propertyKeyは異なるウィンドウに基づいて変更されます。

_postEvent: function(customData) { 
var propertyKey = this._propertyKey; 
var Event = { 
     propertyKey : customData 
    }, 
    url = play.url({ 
     alias: 'controllers.eventController.trackEvent', 
     args: Event, 
     withCsrf: true 
    }); 
return $.ajax(url, { 
    type: 'POST' 
}); 
}, 

このコードをトリガーすると問題が発生します。それが送信するリクエストによると、私が渡したカスタマイズされたpropertyKeyではなく、常にEvent.propertyKeyです。たとえば、このウィンドウの場合、propertyKey = 'region'です。私は '地域'をパラメータとして渡したいと思う。しかし、propertyKeyが何であっても、ポストリクエストはEvent.region = XXXではなくEvent.propertyKey = XXXを常に送信します。

ここではpropertyKeyを渡す方法はありますか?別のページに基づいて動的に変更するために使用しますか?

+0

「this」とは何ですか?どこかに設定しましたか?さもなければ、その値は 'window'です – 4castle

+0

私はこれを指定しません。それは窓でなければなりません。このjsは複数のウィンドウで共有されるため、propertyKeyが毎回変更されます。 –

+0

実際、「窓」について私が言ったことは間違っていることを知りました。私は答えを投稿するつもりです。 – 4castle

答えて

0

関数がオブジェクトのメソッドとして呼び出された場合、メソッドが呼び出されるオブジェクトにはthisが設定されます。 MDN Reference

this

代わりのwindowを使用し、コードのその部分を固定します。

プロパティ名を別の変数の値に設定するには、最初にオブジェクトを作成し、[]を使用してキーと値のペアを設定する必要があります。 SO Reference

var Event = {}; 
Event[propertyKey] = customData; 
var url = play.url({ 
    alias: 'controllers.eventController.trackEvent', 
    args: Event, 
    withCsrf: true 
}); 
+0

私は、 'Event.propertyKey'問題の使用に役立つ回答を更新しました。 – 4castle

関連する問題