[英]Calling javascript function with 'arguments' using received 'arguments' issue
[英]Calling javascript function with arguments using JSNI
我正在嘗試將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});
}-*/;
我有2個問題:
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,Stefan
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.