Мне нужно получить доступ к this
объекта JavaScript из функции Dart. Я эффективно добавляю новый метод к объекту JavaScript через взаимодействие Dart-JS. Мне нужно получить доступ к свойствам объекта JavaScript из метода, определенного в Dart.
Как мне получить доступ к `this` из JavaScript через взаимодействие JS - Dart?
Ответы (1)
Конструктор Callback
может передавать this
из JavaScript. Согласно документации API для обратного вызова:
new Callback.many(Function f, {bool withThis: false})
new Callback.once(Function f, {bool withThis: false})
Вот пример:
Код дротика:
import 'dart:html';
import 'package:js/js.dart' as js;
void main() {
var greeter = js.context['greeter'];
var msg = greeter['greet']('Bob');
greeter['doCoolStuff'] = new js.Callback.many(doCoolStuff, withThis: true);
}
doCoolStuff(jsThis) {
print(jsThis['msg']);
}
Обратите внимание на использование withThis: true
при создании обратного вызова. this
из JavaScript передается в качестве первого аргумента функции обратного вызова. В данном случае я даю ему имя jsThis
.
Код JavaScript:
function Greeter() {
this.msg = 'hello';
var that = this;
document.getElementById('clickme').addEventListener('click', function() {
that.doCoolStuff();
});
}
Greeter.prototype.greet = function(name) {
return this.msg + ' ' + name;
}
var greeter = new Greeter();
document.getElementById('clickme').addEventListener('click', function() {
greeter.doCoolStuff(); // comes from Dart land
});
person
Seth Ladd
schedule
17.07.2013