0

我有一个如下所示的模型结构,我想知道如何使用 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 数组创建一个商店,然后将该商店用作我的 DataView 的数据源,或者直接使用 Bookings 数组作为数据源(我真的不在乎我是如何做到的说实话)。

如果我在我的 Booking 模型上设置 AjaxProxy,它可以正常工作,但显然我无法在加载我的 JSON 时自动创建我的客户端和联系人。

在我看来,客户端模型是分层的顶级模型,是加载数据的模型。

编辑:

我想出来如下(特别感谢下面的handet87的dataview.setStore()指针)。

在这种情况下,关键是要知道创建关系实际上设置了另一个名为的存储,在本例中为 BookingsStore 和 ContactsStore。我需要做的就是 dataview.setStore("BookingsStore")

4

1 回答 1

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);
}});

主要的方法就是这样。希望这可以帮助。

于 2012-11-30T15:22:08.143 回答