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 を作成するときに関数を呼び出す方法がないためである可能性があります。