Я пытаюсь создать оболочку для lunr.js (http://lunrjs.com/) в Dart, однако, Я не могу найти документации о том, как использовать this
с JS-взаимодействием Dart.
Это объект, который я пытаюсь создать:
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 таким образом.
context['lunr']
? Доступен ли lunr в консоли js? - person Ozan   schedule 01.01.2015context['lunr']
возвращает ноль. Это недоступно в консоли js. Lunr.js находится в моем каталоге web / lib / вместе с моим файломLunrSearch.dart
. - person kennyjwilli   schedule 01.01.2015<script src="web/lib/lunr.js"></script>
- person Ozan   schedule 01.01.2015JsObject index = new JsObject(context['lunr'], [_f]);
- person kennyjwilli   schedule 01.01.2015