我正在尝试将Mixpanel与GWT集成,但我在调用具有属性和一个值的事件时遇到问题。
我跟踪简单事件的功能(没有值):
public native void trackEvent(String eventName)/*-{
$wnd.mixpanel.track(eventName);
}-*/;
有效。
但是当我想添加一些属性和值时,它无法正常工作:
public native void trackComplexEvent(String eventName, String property,
String value)/*-{
$wnd.mixpanel.track(eventName, {property:value});
}-*/;
我有两个问题:
1)Mixpanel表示属性名称是:“property”(是的,我传递的变量的名称,而不是值)。
2)Mixpanel表示值为:undefined
mixpanel网站的一个例子是:
mixpanel.track("Video Play", {"age": 13, "gender": "male"});
所以,我猜问题是我正在做错误的电话或错误的参数类型。
答案 0 :(得分:4)
你的问题是,当你传递你创建属性对象时,你不是创建一个参数,取自你的property
名称,而是一个名为property
的属性。如果您调试代码,可以检查参数property
是否已传递到mixpanel.track
函数。
要做你想做的事,你必须使用其他语法。
public native void trackComplexEvent(String eventName, String property,
String value)/*-{
//create the property object you want to pass
var propertyPassed = {}
// set the value you want to pass on the propertyPassed object
propertyPassed[property] = value;
//call your function with the argumetn you want to pass
$wnd.mixpanel.track(eventName, propertyPassed);
}-*/;
我通过在我的网站上创建JavaScript函数来测试您的代码:
window.mixpanel = {
track : function(eventName, props) {
alert(props.age);
}
}
并用
调用它 trackComplexEvent("hallo", "age", "13");
警报为'13'
BR, 斯蒂芬