我有一个如下所示的模型结构,我想知道如何使用Bookings数组作为我的DataView的数据源。
模型结构:
Client
ClientId
Name
Bookings (HasManyAssociation)
Contacts (HasManyAssociation)
AjaxProxy
JsonReader (ImplicitIncludes is set to true so child models are created with one call)
Booking
BookingNodeId
BookingDetails
Contact
ContactNodeId
ContactDetails
以上给出了如下数据结构:
Client
Bookings[
Booking
Booking
]
Contacts[
Contact
Contact
]
我想要做的是,从我的Bookings数组创建一个Store,然后使用该商店作为我的DataView的数据源,或者直接使用Bookings数组作为数据源(我真的不在乎我怎么做说实话)。
如果我在Booking模型上设置了AjaxProxy,它可以正常工作,但显然我加载JSON时无法自动创建客户端和联系人。
在我看来,有意义的是,作为顶级模型的客户端模型是加载数据的模型。
修改
我认为如下(特别感谢下面的handet87为他的dataview.setStore()指针)。
这种情况下的关键是要知道创建关系实际上会设置另一个名为BookingsStore和ContactsStore的商店。 我需要做的就是dataview.setStore(“BookingsStore”)
答案 0 :(得分:2)
使用Ajax请求从服务器获取数据,然后您可以将解析的json数据用作数组。定义商店并将该数据添加到该商店。最后,将该商店分配给您的数据视图。
Ext.Ajax.request({
url: '/Default.aspx',
params: {
'params': itemId
},
failure: function (response) {
Ext.Msg.alert('error', 'error');
},
success: function (response, opts) {
var jsonData = JSON.parse(response.responseText);
//now you can access jsonData.Bookings
var store = Ext.create('Ext.data.Store', {
model: 'MyApp.model.Client'
});
store.setData(jsonData.Bookings);
dataview.setStore(store);
}});
主要方法就是这样。希望这会有所帮助。