2015-10-16 60 views
7

的index.html(頭)有沒有更好的方法來使用新的js 0.6.0包來從JS調用Dart類的方法?

<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

嗨,岡特。我想知道你的例子中的'fullNameJs' getter是否是一個錯誤?它應該是'external Function get fullName;'? –

+0

我想是的。似乎我中途改變了名字,但並非到處都是。感謝您指出:) –

+1

感謝例如,我認爲它會幫助我。 –

回答

2

簡短的回答:沒有。

pkg/js目前專注於讓Dart應用程序使用JavaScript庫。

我們希望能夠更輕鬆地將用Dart編寫的API導出到JavaScript使用者,但這會稍後再來。

相關問題