2

Dartで lunr.js ( http://lunrjs.com/this ) のラッパーを作成しようとしていますが、Dart js 相互運用での使用方法に関するドキュメントが見つかりません。

これは私が作成しようとしているオブジェクトです:

var index = lunr(function () {
    this.field('title', {boost: 10})
    this.field('body')
    this.ref('id')
  })

現在、これが私が持っているすべてです。

JsObject index = new JsObject(context['lunr'], [()
    {

    }]);

this匿名関数からアクセスするにはどうすればよいですか?

また、実際の lunr.js はどこに置くのですか? 私は単にラッパーを作成しているだけなので、必要でない限り HTML ファイルに含める理由はありません。

編集:

私も試しました:

thisキーワードの使用を許可する関数を作成します。(この構文が正しいかどうかはまだわかりません)

_f = new JsFunction.withThis( (t) {
    t.callMethod('field', ['title', {boost: 10}])
    t.callMethod('field', ['body'])
    t.callMethod('ref', ['id'])
  });

次に、JsObjectその関数を使用して を作成します。

JsObject index = new JsObject(context['lunr'], [_f]);

これにより、次のエラーが表示されます。

例外: 未処理の例外: 引数が一致しないクロージャー呼び出し: 関数 'call'

NoSuchMethodError: incorrect number of arguments passed to method named 'call'
Receiver: Closure: (dynamic) => dynamic
Tried calling: call(Instance of 'JsObject', Instance of 'JsObject')
Found: call(t)
#0      Object.noSuchMethod (dart:core-patch/object_patch.dart:45)

次に私はこれを試しました:

JsObject index =new JsObject.fromBrowserObject(context['lunr']);

それは私に別のエラーを与えます:Exception: Illegal argument(s): object cannot be a num, string, bool, or null

_fこれは、そのように JsObject を作成するときに関数を呼び出す方法がないためである可能性があります。

4

3 に答える 3