2013-05-28 4 views
0

Как вы можете видеть. Если бы я обновил FIELD, я получил бы ALERT, который отобразит мне TESTVALUEform мою модель. В первый раз, когда он будет пуст, мой Store будет пустым. Но второй раз он должен показать мне РОДЖЕР. но это не так. У моего магазина никогда не было синхронизации.Хранение данных локально - не работает?

Может ли кто-нибудь мне помочь?

Вот мой код:

контроллер, который получают обновленные данные (проверено, он действительно получает событие)

Ext.define('Prototype.controller.MyController', { 
extend: 'Ext.app.Controller', 

config: { 
    control: { 
     "textfield": { 
      change: 'onTextfieldChange' 
     } 
    } 
}, 

onTextfieldChange: function(textfield, newValue, oldValue, eOpts) { 
    Ext.getStore('localdb').load(); 
    var test = Ext.getStore('localdb').last().get('testValue'); 
    console.log(test); 
    Ext.getStore('localdb').add({testvalue: 'ROGER'}); 
    Ext.getStore('localdb').sync(); 
} 

}); 

Модель:

Ext.define('Prototype.model.LocalData', { 
extend: 'Ext.data.Model', 

config: { 
    identifier: { 
     type: 'uuid' 
    }, 
    proxy: { 
     type: 'localstorage', 
     id: 'test1' 
    }, 
    fields: [ 
     { 
      name: 'testValue' 
     } 
    ] 
} 
}); 

Магазин:

Ext.define('Prototype.store.LocalStore', { 
extend: 'Ext.data.Store', 

requires: [ 
    'Prototype.model.LocalData' 
], 

config: { 
    model: 'Prototype.model.LocalData', 
    storeId: 'localdb', 
    syncRemovedRecords: false, 
    proxy: { 
     type: 'localstorage', 
     id: 'test1' 
    } 
} 
}); 

ответ

0

Co ntroller должно быть, как это

Ext.getStore('localdb').load(); 
var test = Ext.getStore('localdb').last().get('testValue'); 
console.log(test); 
var tested = Ext.create('Prototype.model.LocalData'); 
tested.set('testValue','roger'); 
Ext.getStore('localdb').add(tested); 
Ext.getStore('localdb').sync(); 

я не правильно писать данные -_-

+0

Да, вам нужно создать объект с моделью. Вы можете синхронизировать данные только непосредственно в магазине. –

1

Перед выполнением вашей синхронизации, добавьте record.setDirty() к вашей записи.

+0

Это не проблема, спасибо! – Fawar

+0

Что-нибудь в консоли? Предупреждения, когда вы добавляете запись? Также в Chrome вы можете проверить страницу хранилища, чтобы увидеть локальную базу данных во время выполнения. Это может помочь устранить проблему. – sha

+0

Проблема была в том, что я не добавлял данные правильно, см. Мой собственный anwser на мой вопрос: P спасибо вам за помощь :) – Fawar

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