2014-02-09 68 views
1

我想寫一些調用JavaScript函數「jsOnKey」的Dart函數「oKey」(由於無法預測,因此也有成功或異常)。如何在穩定1.1.1 Dart中綁定JavaScript回調並在JavaScript中綁定Dart回調(Dart2Js2Dart)?

接下來,我希望JavaScript函數「onKey」將調用Dart函數「callbackFromJs」,將控制權再次返回給Dart(成功或異常)。

你能不能幫我這個全流程 - 請各邊境承擔成功EXCEPTION - 我不能依靠第三方代碼 - DART 2 JS 2 DART?


爲了讓這個一般問題更多的上下文,我把例子代碼。

import 'dart:html'; 

void onKey(Event event) { 
    // I want to call something in javascript 
    // function callbackFromDart() { 
    // /* something */; 
    // /* call callbackJs in Dart - return control to dart */ 
    // } 
} 

void callbackFromJs() { 
    // It should be called from JavaScript 
} 

void main() { 
    InputElement nameElement = querySelector('input[name=name]'); 
    nameElement..placeholder = 'Enter text' 
     ..onKeyUp.listen(onKey); 

    InputElement descriptionElement = querySelector('input[name=description]'); 
    descriptionElement..placeholder = 'Enter text' 
    ..onKeyUp.listen(onKey); 
} 

回答

2

首先看看Using JavaScript from Dart

對於你的情況,你可以簡單地通過回調來處理你叫什麼的js 2飛鏢

import 'dart:js' as js; 

void onKey(Event event) { 
    onSuccess() { 
    // Dart callback called from Js 
    } 
    onError() { 
    // Dart callback called from Js 
    } 

    // assuming your js function takes 2 callbacks as parameters 
    try { 
    // in JS : function a() { throw "throw from js"; } 
    js.context.callMethod('myTopLevelFunction', [onSuccess, onError]); 
    } 
    catch (e) { 
    print('js error catch on Dart side : $e'); 
    } 
} 

達特例外可以抓上側的js同樣的代碼。

+0

這不是答案。呼叫鏈是Dart 2 Js 2 Dart(不是Dart 2 Js)。問題是如何在JavaScript中處理Dart和Dart異常中的JavaScript異常(而不是onSuccess,onError)。 – Chameleon

+0

如果你按照我的例子,有飛鏢調用js調用(調用'myTopLevelFunction')**和** js到Dart調用(當從js調用回調函數時)。 –

+0

讓我們來檢查您的答案准備情況:1. d2js done,2. d2js異常 - 部分完成 - 未顯示如何捕獲特定的異常類型。 3. js2d - 完成(我想象代碼)。 4. js2d異常 - 沒有完成(沒有捕獲特定異常的代碼)。 50%完成(只剩下異常類型)。 – Chameleon