2013-02-11 2 views
0

У меня есть две связанные модели, Пользователь и заказ. У пользователя много ордеров.Как отображать связанные модели в отдельных Ext сетках?

Ext.define("User", { 
    extend: 'Ext.data.Model', 
    fields: [ 
     'id', 'name' 
    ], 

    hasMany: {model: 'Order', name: 'orders'}, 

    proxy: { 
     type: 'ajax', 
     url : 'users.json', 
     reader: { 
      type: 'json', 
      root: 'users' 
     } 
    } 
}); 

Ext.define("Order", { 
    extend: 'Ext.data.Model', 
    fields: [ 
     'id', 'total' 
    ], 

    belongsTo: 'User' 
}); 

Я бы хотел показать всех пользователей в одной панели сетки и все заказы в другой сетке. Я знаю, как показать всех пользователей в сетке, я просто определяю хранилище с помощью модели User. Но я немного потерял, как показать все заказы в отдельной сетке. Должен ли я определять отдельный магазин? Какой прокси-сервер я использую? У кого-нибудь есть понимание? В принципе, мне просто нужно концептуальное понимание.

+0

Вы хотите показать заказы в соответствии с выбранным пользователем или просто показать все заказы? – Vogel612

ответ

0

Обычно каждой сетке нужен собственный магазин. Отображение всех заказов будет работать так же, как показать всех пользователей, просто измените идентификатор магазина, и все должно быть в порядке.

1

Я считаю, что то, о чем вы просите, является довольно распространенным случаем использования. К сожалению, ExtJs пока не в состоянии справиться с этим, просто так как в настоящее время каждая сетка привязана к хранилищу, но ваш магазин заказов создается «на лету» каждый раз, когда вы обращаетесь к нему через свою ассоциацию пользователей.

Хорошей новостью является то, что у вас есть различные способы достижения этого. Самый лучший, о котором я могу думать, это то, что каждый раз, когда пользователь нажимает на строку пользователя, вы получаете свой магазин заказов (user.orders()). Тогда вы можете reconfigure свою сетку с этим новым магазином.

+0

Я просто передаю user.orders() в reconfigure()? Но этот метод принимает хранилище в качестве аргумента? Как это работает? –

+0

Дайте ему идти - он должен работать. И да, 'user.orders()' возвращает хранилище. – Izhaki

+0

Cool. Оно работает. Но почему я не могу просто указать его как свойство хранилища Grid при создании сетки? На данный момент мне нужно создать пустую сетку (без сохранения), а затем вызвать 'grid.reconfigure (user.orders())'. Похоже, взлом. –

Смежные вопросы