вставить в хранилище данных сенча сенсорный - PullRequest
1 голос
/ 20 мая 2011

Может кто-нибудь объяснить, как работает вставка для добавления записи в хранилище данных с полями: "title", "info" и "price"?потому что я пробовал некоторые вещи, и ни одна из них не работает.и веб-сайт сенча не очень ясно.

Ответы [ 4 ]

9 голосов
/ 20 мая 2011

Добавление нового предмета в существующий магазин на самом деле не так сложно.

Для начала вам необходимо настроить модель и магазин. В своем вопросе вы называете поля 'title,' info 'и' price '.

Модель:

Ext.regModel('myModel', { 
    fields: [
        {name: 'id', type: 'int' },
        {name: 'title', type: 'string' },
        {name: 'info', type: 'string' },
        {name: 'price', type: 'int' }           
    ]
});

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

Итак, давайте создадим локальное хранилище (пустой магазин). Хранилище состоит из модели (myModel), вы даете ему storeID (чтобы позже вы могли ссылаться на хранилище по этому ID). Прокси-сервер является локальным хранилищем, а уникальный идентификатор магазина будет полем идентификатора модели.

Магазин:

    var myStore = new Ext.data.Store({ 

        model: "myModel",
        storeId: "myStoreID",
        proxy: {
            type: "localstorage",
            id: "id"            
        }
    });

Теперь предположим, что у вас есть какая-то форма (в которую пользователь может добавить ввод названия, информации и цены, и вы хотите добавить эти элементы в существующее хранилище при отправке.

В обработчике кнопки отправки вам теперь нужно «вызвать» хранилище и выполнить для него функцию добавления. В этой функции добавления вы должны будете определить параметры (параметры модели) и данные для вставки.

Ниже я использовал смесь фиксированных данных и переменной для вставки.

myStoreID.add({ title: "Mijn Titel", info: "Informatie, price: prijsvar });

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

dataView.update();

Выше не полный учебник, но я думаю, что это поможет вам?

0 голосов
/ 05 апреля 2013

Очень просто попробовать эти

// сначала получить эти значения и сохранить их локально

     var A_select1=Ext.getCmp('select1').getValue();  // get value

      localStorage.setItem("Adult1_select1",A_select1); // set localStore


      var AdultSalutation={

                     'Adult1_select1':A_select1,    // assign the value                                                   

            };                                       

    var AdultSalutationstore = Ext.getStore('Adult_AdultSalutationstore'); // get store

        AdultSalutationstore.add(AdultSalutation);  // add object   

        AdultSalutationstore.sync();    // sync 

        AdultSalutationstore.load();    // load                                                 
0 голосов
/ 18 июля 2012

Если вы пытаетесь передать объект, который был возвращен из getValue() в вашей форме, убедитесь, что вы запустили

myStore.sync(); 

после вызова метода add(), иливы не увидите его в вашем браузере в местном магазине.

0 голосов
/ 20 сентября 2011

Просто обновление ответа YDL. В соответствии с dataView должно быть связано с обновленным хранилищем, последнее предложение dataView.update () не должно быть необходимо из-за автоматического обновления представлений, связанных с хранилищем, когда оно изменяется.

new Ext.DataView({
    store: MyStore,
    itemSelector: 'div.thumb',
    tpl: thumbTpl
});

позже, если я сделаю следующее, новый элемент должен отображаться в представлениях (List, DataView и т. Д.), Которые имеют MyStore в качестве хранилища.

MyStore.add(newItem);

НТН. Милтон Родригес.

...