2013-10-03 3 views
0

Я новичок в Sencha Touch/Architect и пытаюсь создать свой первый магазин. У меня есть следующие элементы настройки:Sencha Architect localstorage не работает

магазин

Ext.define('InkStudio.store.MyStore', { 
    extend: 'Ext.data.Store', 

    requires: [ 
     'InkStudio.model.activityLog' 
    ], 

    config: { 
     data: { 
      entryID: 1, 
      name: 'First', 
      event: 'First event' 
     }, 
     model: 'InkStudio.model.activityLog', 
     storeId: 'MyStore', 
     proxy: { 
      type: 'localstorage', 
      uniqueID: 'entryID' 
     } 
    } 
}); 

Модель

Ext.define('InkStudio.model.activityLog', { 
    extend: 'Ext.data.Model', 

    config: { 
     identifier: 'uuid', 
     fields: [ 
      { 
       name: 'entryID', 
       type: 'auto' 
      }, 
      { 
       name: 'name', 
       type: 'string' 
      }, 
      { 
       name: 'event', 
       type: 'string' 
      } 
     ] 
    } 
}); 

Тогда у меня есть кнопка со следующим для теста. Кнопка работает, и я получаю оба сообщения «Успех», но данные никогда не появляются в магазине, когда я смотрю на нее или кота файл для нее.

var store=Ext.getStore('MyStore'); 
if(store.add({name: "KITTY", event: "Clicked on the register"})){ 
    console.log("Successfully added"); 
}else{ 
    console.log("Failed to add"); 
} 
if(store.sync()){ 
    console.log("Successfully synced"); 
}else 
{ 
    console.log("Failed to sync"); 
} 

Я пропустил что-то еще?

ответ

2

Использование конфигурации data используется только в том случае, если требуется фиксированная информация на вашем экране. Правильным является:

Ext.define('InkStudio.store.MyStore', { 
    extend: 'Ext.data.Store', 

    requires: [ 
     'InkStudio.model.activityLog' 
    ], 

    config: { 
     model: 'InkStudio.model.activityLog', 
     storeId: 'MyStore', 
     proxy: { 
      type: 'localstorage', 
      id: 'my-store-id' 
     } 
    } 
}); 

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

var record = Ext.create('InkStudio.model.activityLog'); 
... 
//first we load our store. 
store.load({ 
    callback: function(records, operation, success) { 
    console.log('Store loaded...'); 
    //then we can add records 
    store.add(record); 
    store.sync({ 
     success: function(batch, options) { 
     console.log("Record saved..."); 
     }, 
     failure : function(batch, options) { 
     console.log("Error!"); 
     } 
    }); 
    } 
}); 
+0

Серджио, благодарю вас за ответ. У меня были данные там, как уже существующий тест данных на учебник, который я нашел. Я удалил данные и все пробовал, но ничего не появляется. В основном, чтобы проверить это, у меня есть все как настройка, а затем я нажимаю кнопку для запуска кода, а затем просматриваю свои файлы для «KITTY», чтобы появляться в магазине, но это не так. –

+0

Вам также нужно изменить свой прокси-сервер от 'uniqueID' до просто' id'. Это имя свойства не существует и без id ваш localstorage не будет работать. –

+0

Хорошо, я удалил uniqueID: 'entryID' и изменил его на id: 'id', и не было никаких изменений, я также попробовал id: 'entryID', и это тоже не повлияло :( –

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