将Ajax响应数据移动到Sencha touch中存储

时间:2013-05-09 11:06:09

标签: extjs sencha-touch-2

如何添加或保存从ajax请求到存储或模型sencha touch 2的数据 我有控制器,商店和模型。 Ext.Ajax.request();从控制器调用,当它成功时,我希望移动该数据以json格式存储

Ext.define('Myapp.controller.HomeController', {
    extend: 'Ext.app.Controller',

    config: {
        control: {

            "#homepage_id": {
                show: 'onHomepage_idShow'
            }
        }

    },


    onHomepage_idShow: function (component, eOpts) {

        var token = localStorage.getItem('Token'); //**************************************
        console.log('test home', token);

        var customHeaders = {
            'Content-Type': 'application/json; charset=utf-8',
            'ApiAuth': token
        };

        this.callAjax(customHeaders);
    },
    callAjax: function (headers) {
        var customHeaders = headers;

        Ext.Ajax.request({
            url: 'http://localhost:9098/Folder/json/Get',
            params: Ext.util.JSON.encode({
                folderId: 0
            }),
            method: 'POST',

            headers: customHeaders,

            success: function (response) {
                var decode_text = Ext.decode(response.responseText);
                /*I want to add decode_text to a store from this contoller..*/

                //var storez = Ext.data.StoreManager.lookup('commomStore_id');//****************

                //this.getDataList().setStore(storez);
                console.log(storez);


                // process server response here
            },
            failure: function (response, opts) {
                Ext.Msg.alert('Error', 'Error while submitting the form');
                console.log(response.responseText);
            },

            scope: this
        });

我的商店:

Ext.define('Myapp.store.CommonStore', {
    extend: 'Ext.data.Store',

    requires: [
        'Myapp.model.AuthTokenmodel'],

    config: {
        autoLoad: true,
        model: 'Myapp.model.AuthTokenmodel',
        storeId: 'commonStote_id',
        proxy: {

            type: 'localstorage',
            id: 'commomStore_id',
            reader: {
                type: 'json'
            }
        },
        fields: [{
            name: 'authtoken'
        }]
    }
});

2 个答案:

答案 0 :(得分:0)

为此,您必须解析您的回复并从中创建Myapp.model.AuthTokenmodel个对象,然后使用add方法将这些对象添加到您的商店。

顺便说一句,如果您的回复是JSOn格式,您应该将其解析为JSON而不是像这样的文本:

var respObj = Ext.JSON.decode(response.responseText);
console.log(respObj);

然后使用respObj数据创建模型对象并将其添加到store:

var storez = Ext.data.StoreManager.lookup('commomStore_id');
storez.add(Ext.create('Myapp.model.AuthTokenmodel', {authtoken : respObj.authToken}));

答案 1 :(得分:0)

Ext.getStore('commomStore_id').loadData(decode_text);