1

JavaScript関数「jsOnKey」を呼び出すDart関数「oKey」を書きたいと思います(予測できないため、成功または例外もあります)。

次に、JavaScript 関数 "onKey" が Dart 関数 "callbackFromJs" を呼び出して、制御を Dart に再び戻します (成功または例外あり)。

この完全なフローについて助けてもらえますか- 各境界で成功または例外を想定してください- サードパーティのコードに頼ることはできません - 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);
}
4

1 に答える 1

2

まず、Using JavaScript from Dart をご覧ください。

あなたの場合、コールバックを渡すだけで、Js 2 Dartと呼ばれるものを処理できます。

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

Dart の例外は、Js 側の同じ種類のコードでキャッチできます。

于 2014-02-10T08:11:56.190 に答える