2013-07-17 8 views

Odpowiedz

5

Konstruktor Callback może przekazać kod this z JavaScript. Według API docs for Callback:

new Callback.many(Function f, {bool withThis: false}) 
new Callback.once(Function f, {bool withThis: false}) 

Oto przykład:

kod

Dart:

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']); 
} 

Wskazówka wykorzystanie withThis: true podczas tworzenia oddzwaniania. this z JavaScript jest przekazywany jako pierwszy argument funkcji zwrotnej. W tym przypadku nadaję mu nazwę jsThis. Kod

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 
}); 
Powiązane problemy