我正在尝试在 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]);
这会给我这个错误:
异常:未处理的异常:带有不匹配参数的闭包调用:函数“调用”
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 时调用该函数。