Javascript参数使用Play动态更改

时间:2016-03-30 23:46:21

标签: javascript playframework

我有这样的javascript请求将数据传递给play框架,并且基于不同的propertyKey,事件应该有不同的参数。

我这样做。

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'
 });
},

触发此代码时的问题。根据它发送的请求,它总是Event.propertyKey而不是我传入的自定义propertyKey。例如,如果对于这个窗口,propertyKey =' region'。我想要' region'作为参数传入。但无论propertyKey是什么,post请求总是发送Event.propertyKey = XXX而不是Event.region = XXX。

有没有办法在这里传递propertyKey是否可以根据不同的页面动态更改?

1 个答案:

答案 0 :(得分:0)

  

当一个函数作为一个对象的方法被调用时,它的this被设置为调用该方法的对象。 MDN Reference

要修复代码的这一部分,请使用window代替this

为了将属性名称设置为另一个变量的值,您必须先创建对象,然后使用[]设置键/值对。 SO Reference

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