簡體   English   中英

使用JSNI使用參數調用javascript函數

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM