2015-10-16 10 views
7

index.html (baş)Yeni js 0.6.0 paketi ile JS'den alınabilen Dart sınıfının bir yöntemini yapmanın daha iyi bir yolu var mı?

<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}'; 
} 
+0

Merhaba, Gunter. Örneğinizde "fullNameJs" alıcısı bir hata mıdır acaba? Harici İşlev olsun fullName olsun? –

+0

Sanırım öyle. Görünüşe göre isimleri değiştirdim ama her yerde değil. Onu işaret ettiğin için teşekkürler :) –

+1

Örneğin, bana yardım edeceğini düşünüyorum. –

cevap

2

Kısa cevap: hayır. Şu anda bir Dart uygulamasının JavaScript kitaplıklarını kullanmasına izin verilmesine odaklanmıştır.

Dart'ta yazılan API'leri JavaScript kullanıcılarına aktarmayı kolaylaştırmak istiyoruz, ancak bu daha sonra gelecek.

İlgili konular