2017-12-05 119 views
6

Dart'tan call() (iç içe geçmiş bir nesnede) adlı bir JavaScript işlevini çağırmanın herhangi bir yolu var mı yoksa Dart 2.0'ı özel bir işlemin call() kaldırılmış olabilir?dart isminden 'call' adında bir JavaScript işlevi nasıl çağrılır

ben gibi JS Proxy'yi vardır:

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

Ama call() bir fonksiyonu haline nesneyi çevirmek için kullanılabilir olarak, bu imkansız JS nesnesi işlevi erişimi kolaylaştırır.

Ben Dart içinde yöntemin adını değiştirecek olsaydı, ama bu package:js tarafından desteklenmeyen:

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

alıyorum hatadır:

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

ise işlevi bulunamadı, hata şu şekilde görünecektir:

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

Aynı nesne üzerindeki diğer işlevler gayet iyi çalışıyor.

cevap

3

Sen callJS$ ile öneki:

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

JS$ dart anahtar kelimeler ile çakışan JS isimlere erişmesine izin vermek için önek olarak kullanılabilir.