2011-07-29 16 views
5

Gần đây tôi đã sử dụng directFn cấu hình như thế này:ExtJS4: Tại sao khi tôi sử dụng directFn config trong cửa hàng của tôi, tôi cần phải xác định là tài sản directCfg.method directFn của

var store = new Ext.data.Store({ 
    proxy: { 
     type: 'direct', 
     directFn: myDirectfn, 
... 

Nhưng nó sẽ không làm việc vì ExtJS ném ngoại lệ

Uncaught TypeError: Cannot read property 'method' of undefined

tại dòng

method = fn.directCfg.method; 
if (method.ordered) { 

trong tập tin path/to/ext/src/data/proxy/Direct.js. Sau khi đào một số tôi đã phát hiện ra rằng fn đề cập đến chức năng myDirectfn. Vì vậy, tôi vừa thêm các dòng:

myDirectfn.directCfg = { 
    method: {} 
}; 

trong mã của tôi. Sau đó tất cả bắt đầu hoạt động bình thường (Here is fiddle).

Câu hỏi đặt ra là: Loại điều huyền diệu nào là directCfg? Tại sao nó lại cần thiết?

Trả lời

1

Bạn phải xác định phương thức từ xa trong Ext.app.REMOTING_API trước khi có thể được gọi. Trong example given by reporter, trang api được bao gồm và định nghĩa "TestAction" chức năng gọi bằng proxy:

Ext.ns("Ext.app"); 
Ext.app.REMOTING_API = {"url":"php\/router.php","type":"remoting","actions":{"TestAction":[{"name":"doEcho","len":1},{"name":"multiply","len":1},{"name":"getTree","len":1},{"name":"getGrid","len":1},{"name":"showDetails","params":["firstName","lastName","age"]}],"Profile":[{"name":"getBasicInfo","len":2},{"name":"getPhoneInfo","len":1},{"name":"getLocationInfo","len":1},{"name":"updateBasicInfo","len":0,"formHandler":true}]}}; 

Khi chức năng trực tiếp được xác định trong Ext.app.REMOTING_API, lỗi đó sẽ biến mất.

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