我正在尝试将 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 web 的一个例子是:
mixpanel.track("Video Play", {"age": 13, "gender": "male"});
所以,我想问题是我调用错误或参数类型错误。
最佳答案
你的问题是,当你传递你创建的属性对象时,你没有创建一个参数,取自你的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, 斯特凡
关于javascript - 使用 JSNI 调用带参数的 javascript 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12984968/