2011-11-15 49 views
8

Tôi đang cố gắng tải dữ liệu 'lồng nhau' trong mối quan hệ hasMany trong ExtJS4. Mô hình của tôi trông như thế này:Đang tải dữ liệu có nhiều dữ liệu trong ExtJS

Ext.define("Entrypage.model.Entrypage",{ 
    extend: "Ext.data.Model", 
    fields: ['id','title','urlkey','text','picture','keywords', 'searchterms','description','critriamodus'], 
    hasMany: {model: 'EntrypageCriterium',name:'brands'}, 
    proxy: { 
     type: 'ajax', 
     url: '/Admin/extjson/entrypages', 
     reader: {type:'json', root:'entrypages'} 
    } 
}); 

EntrypageCriterium:

Ext.define("Entrypage.model.EntrypageCriterium",{ 
    extend: "Ext.data.Model", 
    fields: ['id','type','title'] 
}); 

Tôi tải dữ liệu của tôi như vậy:

Entrypage.load("nikon-coolpix",{success:function(record,options,success){ 
console.log(record); 
}}); 

Nó tải tốt. Json trả về điều này:

{ 
    "success": true,   
"entrypages":[{ 
    "id":"1", 
    "urlkey":"nikon-coolpix", 
    "title":"Nikon Coolpix", 
    "text":"Some blahblah about Nikon", 
    "keywords":"nikon,coolpix,digitale,camera", 
    "description":"Nikon Coolpix camera's", 
    "picture":"Nikon Coolpix camera's", 
    "searchterms":"nikon coolpix", 
    "language":"nl", 
    "brands":[ 
     {"id":27038,"title":"Nikon","type":"brand"} 
    ] 
}] 
} 

Nhưng khi tôi thử record.brands() hoặc bất kỳ thứ gì tương tự. Nó nói không có phương pháp như vậy tồn tại. Tôi nghĩ có điều gì đó sai khi ánh xạ dữ liệu trong mô hình.

Bất kỳ trợ giúp nào sẽ được đánh giá rất nhiều!

Trả lời

17

Cuối cùng tìm thấy vấn đề. Đối với bất kỳ tài liệu tham khảo trong tương lai:

Nếu bạn đang sử dụng các gói trong cấu trúc MVC mới của ExtJS, xác định đường dẫn đầy đủ đến lớp liên kết trong hiệp hội của bạn như vậy:

hasMany: {model: 'Entrypage.model.EntrypageCriterium', name: 'brands', associationKey:'brands'} 
+0

Cảm ơn bạn. Tôi đã tìm ra tình huống tương tự nhưng rất khó để làm. –

+0

Việc sửa chữa có làm cho mô hình hoàn toàn đủ điều kiện không? hoặc là sửa chữa thực sự thêm các hiệp hộiKey? – tommyO

3

Bạn cần đặt thuộc tính associationKey trong liên kết hasMany, do đó, nó biết thuộc tính json nào sẽ sử dụng.

hasMany: {model: 'EntrypageCriterium',name:'brands', associationKey:'brands'} 

thấy Đang tải dữ liệu Nested phần ở đây:

http://docs.sencha.com/ext-js/4-0/#!/api/Ext.data.reader.Reader

+0

Xin lỗi, không hoạt động được. Nhưng điều đó không làm cho phương thức 'thương hiệu' hoạt động, nhưng trả lại một danh sách trống? –

+0

Tôi đã quên không gian tên trên mô hình của bạn. Khóa ngoại của bạn cũng sẽ sai, nhưng bạn không cần sử dụng nó trong trường hợp này. –

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