0

我需要从我的服务器获取数据并将模型与我的本地存储同步

这是我的代码

模型.js

Ext.define('bluebutton.model.BlueButton.Loyalty', {
    extend: 'Ext.data.Model',
    config: {
        idProperty: 'loyaltyModel',
        fields: [
             { name: 'fullName' },
             { name: 'age' },

             {  name: 'lastvisited'  },
             {  name: 'consumer_bbID'  },
             {  name: 'merchant_bbID'  },
             {  name: 'sessionId'  },
             {  name: 'deviceId'  },

             {  name: 'updatedPoint'  },
             { name: 'currentPoint' },

             {  name: 'action'  },
             {  name: 'result'  },
             {  name: 'loyaltyMembership_Id'}



        ],

        proxy: {
            type: 'rest',
          url: 'http://192.168.251.131:8080/WebCommon/rest/BBWebService/updateLoyaltyCardPoint',
            reader: 'json',
            actionMethods: {
                create: 'POST',
                read: 'POST',
                update: 'PUT',
                destroy: 'DELETE'
            },


                      noCache: false, // get rid of the '_dc' url parameter

//                    extraParams: {
//                    userid: "test",
//                    // add as many as you need
//                },


//            timeout:300,
//            listeners: {
//                exception: function(proxy, response, operation) {
//                     alert("Connection Problem");
//                       
//                  }
//               },

            reader: {
                type: 'json',

            },

            writer: {
                type: 'json',

            },
        }






    }

});

Store.js

    Ext.define('bluebutton.store.BlueButton.LoginLS', {
    extend: "Ext.data.Store",
    requires: ['bluebutton.model.BlueButton.Login'],
    config: {


         model :'bluebutton.model.BlueButton.Login',

         proxy: {
             type: 'localstorage',
             id: 'loginLS'
         }


    }
});

查看.js

 Ext.define('bluebutton.view.Login', {
    extend: 'Ext.form.Panel',
    xtype: 'loginview',
    id: 'loginview',
    requires: [
        'bluebutton.view.Main',
        'Ext.field.Password',
        'bluebutton.store.BlueButton.LoginLS'
    ],

    config: {
        labelWidth: 80,
        frame: true,
        title: 'Please Login',

        items: [

                        {
                            xtype: 'textfield',
                            id: 'bbID',
                            label: 'User ID',

                        },
                        {
                            xtype: 'passwordfield',
                            id: 'bbPassword',
                            label: 'Password',

                        },
                        {
                            xtype: 'button',
                            text: 'Login',
                            id:'btnLogin',
//                            handler: function () {


//                            }
                        },

当我按下登录按钮时,如何将我的模型与本地存储同步?请指导我解决方案

4

3 回答 3

2

创建模型对象时在模型对象上设置脏标志:

  var loyalty = Ext.create('bluebutton.model.BlueButton.Loyalty', { ... });
  loyalty.setDirty(true);  // <== missing step!
  var store = Ext.getStore('blueButtonStore');
  store.add(loyalty);
  store.sync();

您还可以为存储配置设置 autoSync: true 和 autoLoad: true 以避免必须执行 store.load() 和 store.sync() 。

于 2013-03-10T07:35:59.403 回答
1

我可能误解了这个问题,但您可以storeId向商店添加一个属性,例如“blueButtonStore”,然后像这样同步:

Ext.getStore('blueButtonStore').sync();

要使用本地存储中存在的内容加载存储,您可以使用

Ext.getStore('blueButtonStore').load();

让我知道这是否与您的问题无关。

于 2013-03-05T05:03:58.667 回答
0

你的店是bluebutton.store.BlueButton.LoginLS

尝试调用:

Ext.getStore('LoginLS').sync();

适合我的程序:
我的商店名称例如:MyApp.store.settings.Settings.
为了获得这个商店,我只需调用var settings = Ext.getStore('Settings');
现在我可以添加、从商店中删除项目,然后同步:settings.sync();

检查您的商店是否在 app.js 中定义。

于 2013-04-10T10:55:34.860 回答