ExtJS: как вставить запись магазина в другой магазин? - PullRequest
1 голос
/ 23 марта 2012

У меня есть две модели данных: Writer.AttributValeur и Writer.Produit.

Writer.Produit имеет отношения one2man с Writer.AttributValeur.

Я хочу отобразить (и создать / редактировать / удалить) список Writer.Produit. И я хочу иметь возможность добавить Writer.AttributValeur к текущему Writer.Produit.

Итак, вот что я сделал: два магазина:

  • первый связан с сеткой (и формой) для отображения (и для создания / редактирования / удаления) списка Writer.Produit.
  • второй используется для отображения списка (только список) Writer.AttributValeur

В первой сетке есть кнопка «Добавить AttributValeur». Когда пользователь нажимает на нее, я отображаю Windows, где есть сетка, связанная со вторым магазином. Если пользователь выбирает запись и нажимает кнопку «ОК», я могу получить запись Writer.AttributValeur с этим кодом:

var currentAttribut = gridAttributs.getView()
    .getSelectionModel()
    .getSelection()[0];

Я хочу добавить эту запись, currentAttribut, в Writer.Produit хранилище.

Есть идеи, как это сделать? Ниже приводится объявление ExtJS моих моделей данных и создание моих магазинов.

Ext.define('Writer.AttributValeur', {
    extend: 'Ext.data.Model',
    fields: [{
            name: 'id',
            type: 'int',
            useNull: true
        },  
        'description',
        'val'
    ],  
    belongsTo: 'Writer.Produit'
});

Ext.define('Writer.Produit', {
    extend: 'Ext.data.Model',
    fields: [{
            name: 'id',
            type: 'int',
            useNull: true
        },  
        'titre',
        'description'
    ],
    hasMany: {
        model: 'Writer.AttributValeur',
        name: 'attributs'
    }   
});

var store = Ext.create('Ext.data.Store', {
    model: 'Writer.Produit',
    autoLoad: true,
    autoSync: true,
    proxy: {
        type: 'ajax',
        api: {
            read: 'json/liste_view/',
            create:  'json/item/?mode=create',
            update:  'json/item/?mode=update',
            destroy: 'json/item/?mode=destroy'
        },
        reader: {
            type: 'json',
            successProperty: 'success',
            root: 'data',
            messageProperty: 'message'
        },
        writer: {
            type: 'json',
            writeAllFields: true,
            root: 'data'
        }
    }
});


var storeAttributs = Ext.create('Ext.data.Store', {
    model: 'Writer.AttributValeur',
    autoLoad: true,
    autoSync: true,
    proxy: {
        type: 'ajax',
        api: {
            read: 'json/attributs/'
        },
        reader: {
            type: 'json',
            successProperty: 'success',
            root: 'data',
            messageProperty: 'message'
        }
    }
});

1 Ответ

1 голос
/ 23 марта 2012

В чем проблема?У каждого магазина есть метод add.Используйте это.

...