2013-03-13 46 views
1

我正在使用Pase.com和js SDK作爲我的Dart App的後端。除了解析sdk接受回調函數的對象之外,這工作正常。在飛鏢林不知道如何做到這一點,我可以得到單個回調工作正常。但我完全失去了這裏。Dart JS Interop - 如何傳遞函數的回調對象

正常解析JS的註冊用戶

var user = new Parse.User(); 
    user.set("username", "my name"); 
    user.set("password", "my pass"); 
    user.set("email", "[email protected]"); 

    // other fields can be set just like with Parse.Object 
    user.set("phone", "415-392-0202"); 

    user.signUp(null, { 
    success: function(user) { 
     // Hooray! Let them use the app now. 
    }, 
    error: function(user, error) { 
     // Show the error message somewhere and let the user try again. 
     alert("Error: " + error.code + " " + error.message); 
    } 
    }); 

我的DART代碼

void registerSuccess(user) { 
    print("success"); 
    } 

    void registerFailed(user, error){ 
    print("fail"); 
    } 

    void register(String email, String password) 
    { 
    js.scoped(() { 

     var parse = js.context.Parse; 


     var parseUser = new js.Proxy(parse.User); 

     parseUser.set("username", "my name"); 
     parseUser.set("password", "my pass"); 
     parseUser.set("email", "[email protected]"); 

     print(parseUser.getEmail()); 

     var callbackSuccess = new js.Callback.once(() => registerSuccess()); 
     var callbackFailed = new js.Callback.once(() => registerFailed()); 

     parseUser.signUp(null,{"success":callbackSuccess, "error": callbackFailed}); 

     //parseUser.signUp(); 
    }); 
    } 

而且回調函數需要接受來自JS傳回瓦爾。

任何幫助將是一個讚賞,我已經旋轉我的輪2天在此上。

回答

3

代替:

var callbackSuccess = new js.Callback.once(() => registerSuccess()); 
var callbackFailed = new js.Callback.once(() => registerFailed()); 
parseUser.signUp(null,{"success":callbackSuccess, "error": callbackFailed}); 

使用:

var callbackSuccess = new js.Callback.once(registerSuccess); 
var callbackFailed = new js.Callback.once(registerFailed); 
parseUser.signUp(null, js.map({"success":callbackSuccess, "error": callbackFailed})); 
+0

查閱即時得到 未捕獲的類 '()=>空隙' 沒有實例方法 '呼叫'。 NoSuchMethodError:找不到方法:'call' Receiver:Closure :(動態)=>無效函數'registerFailed':. 參數:[Proxy'的實例,'Proxy'的實例,'Proxy'的實例] – user2166822 2013-03-14 04:05:15

+0

你得到這個錯誤是因爲registerFailed只接受2個參數,但接縫被3個參數調用。你必須將'registerFailed'改爲'void registerFailed(user,error,WAT)'。 – 2013-03-14 07:13:06

+0

@AlexandreArdhuin,這裏使用了什麼庫?我無法找到js.scoped和這個問題中使用的其他方法。 'dart:js'沒有他們。 – 2014-02-01 16:42:55

相關問題