7
index.html (Kopf)Gibt es eine bessere Möglichkeit, eine Methode einer Dart-Klasse mit dem neuen js 0.6.0-Paket von JS aufrufbar zu machen?
<script>
var callDartMethod = function(dartObject) {
return dartObject.fullName();
}
</script>
index.dart
import 'package:js/js.dart';
@Js() // about to being changed to @JS
external String callDartMethod(p);
main() {
final p = Person.create(firstName: 'Günter', lastName: 'Zöchbauer');
print(callDartMethod(p)); // indirect call from JS
// print(p.fullName()); // call from Dart directly
}
@Js() // about to being changed to @JS
class Person {
external String get firstName;
external set firstName(String firstName);
external String get lastName;
external set lastName(String lastName);
external Function get fullName;
external set fullName(Function function);
external factory Person({String firstName, String lastName});
static Person create({String firstName, String lastName}) =>
new Person(firstName: firstName, lastName: lastName)
// works but feels a bit cumbersome
..fullName = allowInteropCaptureThis(fullNameImpl);
static String fullNameImpl(self) => '${self.firstName} ${self.lastName}';
}
Hallo, Gunter. Ich frage mich, ob der 'fullNameJs'-Getter in deinem Beispiel ein Fehler ist? Sollte es 'externe Funktion sein, fullName;'? –
Ich denke schon. Scheint, ich ändere die Namen in der Mitte, aber nicht überall. Danke für das Aufzeigen :) –
Danke zum Beispiel, ich denke, es wird mir helfen. –