3

我正在尝试将 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 说属性名称是:“属性”(是的,我传递的变量的名称,而不是值)。

2) Mixpanel 说值是:undefined

mixpanel web 的一个例子是:

mixpanel.track("Video Play", {"age": 13, "gender": "male"});

所以,我想问题是我打错电话或使用错误类型的参数。

4

1 回答 1

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,斯特凡

于 2012-10-20T10:57:52.670 回答