2012-04-28 25 views
11

làm thế nào tôi có thể tạo ra một JavaScriptObject bằng tay khi tôi có lớp nàyCách tạo JavaScriptObject bằng tay trong GWT?

public class Person extends JavaScriptObject{ 
    protected Person(){} 

    public final native String FirstName()/*-{ 
     return this.firstName; 
    }-*/; 

    public final native String LastName()/*-{ 
     return this.lastName; 
    }-*/; 
} 

tôi đang hỏi, vì tôi có một mảng này JavaScriptObject Peron

public JsArray<Person> persons = JavaScriptObject.createArray().cast(); 

và tôi muốn đầy đủ mảng này với một số đối tượng Người này

Peson a = new Person(); 
a.setfirstName(textField1.getText()); 
a.setLastName(textField2.getText()); 
persons.push(a) 

nhưng tôi không biết cách tạo đối tượng như vậy bằng tay. Các giá trị của firstName và lastName i sẽ lấy từ một thành phần giao diện người dùng như textField. Xin vui lòng giúp đỡ!

Trả lời

11

Bạn có thể thực hiện việc này?

Person a = (Person)JavaScriptObject.createObject().cast(); 
+0

Cảm ơn rất nhiều. tôi có hai câu hỏi: 1) là có một sự khác biệt giữa bạn và phiên bản này -> Person a = Person.createObject() cast(); 2) làm thế nào tôi có thể vượt qua các giá trị cho đối tượng người? sao tôi nên tạo các phương thức setter? nhưng trong các lớp mở rộng JavaScriptObjects thì không có biến nào được phép. vì vậy làm thế nào tôi có thể vượt qua các giá trị lastName và firstName cho đối tượng? – Pero

+1

Không có sự khác biệt giữa hai phương thức createObject, vì nó là một phương thức tĩnh trên lớp JavascriptObject. – krishnakumarp

+1

Đối với câu hỏi thứ 2, bạn mở rộng JavascriptObject để truy cập các đối tượng JSON gốc. Những người định cư sẽ là các cuộc gọi tự nhiên gán giá trị cho các biến Javascript gốc. Tôi nghĩ vì lý do này, họ đã đặt một quy tắc mà các biến thành viên không được phép trong các loại lớp phủ. Vui lòng đọc https://developers.google.com/web-toolkit/doc/latest/DevGuideCodingBasicsOverlay để biết thêm chi tiết. – krishnakumarp

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