Ho bisogno di accedere a un oggetto JavaScript this
da una funzione Dart. Sto effettivamente aggiungendo un nuovo metodo a un oggetto JavaScript, tramite l'interoperabilità Dart-JS. Devo accedere alle proprietà che si trovano nell'oggetto JavaScript dal metodo definito in Dart.Come posso accedere a `this` da JavaScript tramite JS - Dart interop?
6
A
risposta
5
Il costruttore Callback
può passare il this
da JavaScript. Secondo il API docs for Callback:
new Callback.many(Function f, {bool withThis: false})
new Callback.once(Function f, {bool withThis: false})
Ecco un esempio:
codiceDart:
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']);
}
Avviso l'uso di withThis: true
durante la creazione della funzione di richiamata. Il this
da JavaScript viene passato come primo argomento della funzione di callback. In questo caso, gli ho dato un nome di jsThis
. Codice
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
});
Problemi correlati
- 1. Dart js-interop con jquery ui
- 2. chiama javascript da Dart
- 3. Posso usare una libreria di nodi in un server Dart
- 4. Come accedere a Iframe padre da JavaScript
- 5. Interop da 64 a 32 bit - come?
- 6. Come posso accedere a memcached con Javascript?
- 7. Interop ClojureScript
- 8. Come accedere a una casella di testo HTML da javascript?
- 9. Javascript 'this'
- 10. Map da Class a Dart
- 11. Javascript setInterval e `this` soluzione
- 12. Esporre le funzioni Dart a javascript
- 13. Chiamare il codice Dart da javascript
- 14. Che differenza c'è tra il pacchetto dart: js e js?
- 15. Posso accedere a un cookie da Socket.io?
- 16. Come accedere a journald (systemd) tramite Python?
- 17. Linee griglia in excel tramite interop
- 18. Come connettere Dart a SQLite?
- 19. Passare l'oggetto VB6 a un oggetto .NET tramite interop?
- 20. Come ripristinare una finestra senza attivarla tramite WPF (o interop)
- 21. Come ottenere JSON da PHP a JS?
- 22. Come posso accedere a "questo" di un controller js angolare, dall'interno di un metodo di promessa?
- 23. Metodo corretto per accedere ai token OAuth2 tramite javascript
- 24. Come posso accedere a un javascript di un iframe da un utente?
- 25. Come posso accedere a una pasta privata grezza da pastebin?
- 26. Come posso accedere a un repository Github privato da heroku?
- 27. Come accedere a Ruggine da altre lingue
- 28. Come posso accedere dinamicamente all'ambito locale in javascript?
- 29. Come funziona il compilatore dart javascript (dart2js)?
- 30. Passing variabili JSON-encoded da PHP a JavaScript tramite POST