2017-12-05 121 views
6

Czy istnieje sposób wywołania funkcji JavaScript o nazwie call() (w obiekcie zagnieżdżonym) z Dart lub czy muszę poczekać na Dart 2.0, od której należy specjalna obsługa call() może zostać usunięty?Jak wywołać funkcję JavaScript o nazwie `call` z dartu

Mam JS Proxy jak:

@JS() 
class SomethingFancy { 
    external String call(); 
} 

Ale jak call() może być używany do włączania obiektu do funkcji, to sprawia, że ​​niemożliwe, aby uzyskać dostęp do funkcji obiektu JS.

Gdybym mógł, chciałbym zmienić nazwę metody w DART, ale który nie jest obsługiwany przez package:js:

/// By default the dart name is used. It is not valid to specify a custom  
/// [name] for class instance members. 

Błąd pojawia się:

Uncaught Error: NoSuchMethodError: method not found: 'call$0' (J.getSomethingFancy$1$x(...).call$0 is not a function)

Jeśli funkcja nie istniała, błąd wyglądałby tak:

Uncaught Error: NoSuchMethodError: method not found: 'callMe' (receiver.callMe is not a function)

Inne funkcje tego samego obiektu działają dobrze.

Odpowiedz

3

można poprzedzić call z JS$:

@JS() 
class SomethingFancy { 
    external String JS$call(); 
} 

JS$ może być stosowany jako przedrostek w celu umożliwienia dostępu do nazw JS że konflikty z dart słów kluczowych.