2012-10-20 5 views
2

MixPlatform을 GWT와 통합하려고하지만 속성 및 값이 하나있는 이벤트를 호출하는 데 문제가 있습니다. 그것은 작동JSNI를 사용하여 인수를 사용하여 javascript 함수 호출

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

}-*/; 

나는이 2 개의 문제가 :

1) Mixpanel이이 건물의 이름은 말한다 : " 속성 "(예, 값이 아니라 전달하는 변수의 이름)입니다.

2) Mixpanel는 가치 말한다 :

을 정의되지 않은 mixpanel 웹에서 예는 다음과 같습니다

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

그래서, 문제는 내가 잘못된 유형의 잘못된 통화 나하고 있어요 것 같아요 인수.

답변

3

문제는 속성 개체를 만들 때 property 이름에서 가져온 매개 변수를 만들지 않고 property이라는 속성을 사용한다는 것입니다. 코드를 디버깅하는 경우 property 매개 변수가 mixpanel.track 함수에 전달되었는지 확인할 수 있습니다.

원하는대로하려면 다른 구문을 사용해야합니다.

window.mixpanel = { 
      track : function(eventName, props) { 
       alert(props.age); 
      } 
     } 

trackComplexEvent("hallo", "age", "13"); 

경고했다 '13'

BR, 로 전화 :

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); 
}-*/; 

나는 내 사이트에 자바 스크립트 funciton를 작성하여, 코드를 테스트 스테판

+0

감사합니다. 그것은 작동합니다. 이제 다음 단계는지도 :)을 전달하려고합니다. –

관련 문제