2017-12-05 13 views
6

Có cách nào để gọi hàm JavaScript có tên call() (trong đối tượng lồng nhau) từ Dart hay tôi phải đợi Dart 2.0, từ đó xử lý đặc biệt call() có thể bị xóa?Cách gọi hàm JavaScript có tên là `call` từ phi tiêu

Tôi có một Proxy JS như:

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

Nhưng khi call() thể được sử dụng để biến một đối tượng vào một chức năng, nó làm cho nó không thể truy cập vào các chức năng của đối tượng JS.

Nếu tôi có thể, tôi sẽ thay đổi tên của các phương pháp trong Dart, nhưng điều đó không được hỗ trợ bởi package:js:

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

Các lỗi tôi nhận được là:

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

Nếu chức năng không tồn tại, lỗi sẽ trông như sau:

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

Các chức năng khác trên cùng một đối tượng hoạt động tốt.

Trả lời

3

Bạn có thể thêm tiền tố call với JS$:

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

JS$ có thể được sử dụng như tiền tố cho phép tiếp cận với tên JS xung đột với từ khóa phi tiêu.

Các vấn đề liên quan