Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/469.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript ext.js自维护存储_Javascript_Extjs_Model View Controller - Fatal编程技术网

Javascript ext.js自维护存储

Javascript ext.js自维护存储,javascript,extjs,model-view-controller,Javascript,Extjs,Model View Controller,获取客户端存储的最快方法是什么,它使用某种回调/侦听器返回数据(而不是从服务器返回数据)。解释: Ext.define('aaa.store.ContactList', { extend: 'Ext.data.Store', requires: 'aaa.model.ContactList', model: 'aaa.model.ContactList', autoLoad: true, fields:['firstLetter', 'userId', '

获取客户端存储的最快方法是什么,它使用某种回调/侦听器返回数据(而不是从服务器返回数据)。解释:

Ext.define('aaa.store.ContactList', {
    extend: 'Ext.data.Store',
    requires: 'aaa.model.ContactList',
    model: 'aaa.model.ContactList',
    autoLoad: true,
    fields:['firstLetter', 'userId', 'userName', 'h', 'w', 'm', 'v', 'custom'],
    groupField: 'firstLetter',
    sorters: ['firstLetter', 'userId'],

    // Overriding the model's default proxy
    proxy: {
        type: 'direct',
        directFn: 'getPhoneBookEntries', <<--- don't want this to be a server method, but a client side js method...
        reader: {
            type: 'json',
            rootProperty: ''
        }
    }
});
商店:

Ext.define('WebPhone.model.ContactList', {
    extend: 'Ext.data.Model',

    fields: [
        { name: 'firstLetter', type: 'string' },
        { name: 'userId', type: 'string' },
        { name: 'userName', type: 'string' },
        { name: 'h', type: 'string' },
        { name: 'w', type: 'string' },
        { name: 'm', type: 'string' },
        { name: 'v', type: 'string' },
        { name: 'custom', type: 'string' }

    ]
});
Ext.define('WebPhone.store.ContactList', {
    extend: 'Ext.data.Store',
    requires: 'WebPhone.model.ContactList',
    model: 'WebPhone.model.ContactList',
    autoLoad: true,
    fields:['firstLetter', 'userId', 'userName', 'h', 'w', 'm', 'v', 'custom'],
    groupField: 'firstLetter',
    sorters: ['firstLetter', 'userId'],

    // Overriding the model's default proxy
//    proxy: {
//        type: 'memory',
//        reader: {
//            type: 'json',
//            rootProperty: 'root'
//        }
//    }
});
var store = Ext.getStore( "ContactList" );
//var array_values = new Array();
//for( var key in phoneBook )
    //array_values.push( phoneBook[key] );
//store.loadData( array_values );
store.loadData( [{firstLetter:'a', userId:'ali', userName:'ali', h:'04040', w:'04040', m:'04040', v:'04040', custom:'04040'}] );
gride定义对于本文来说太长,但它可以处理预加载的数据

数据加载代码:

Ext.define('WebPhone.model.ContactList', {
    extend: 'Ext.data.Model',

    fields: [
        { name: 'firstLetter', type: 'string' },
        { name: 'userId', type: 'string' },
        { name: 'userName', type: 'string' },
        { name: 'h', type: 'string' },
        { name: 'w', type: 'string' },
        { name: 'm', type: 'string' },
        { name: 'v', type: 'string' },
        { name: 'custom', type: 'string' }

    ]
});
Ext.define('WebPhone.store.ContactList', {
    extend: 'Ext.data.Store',
    requires: 'WebPhone.model.ContactList',
    model: 'WebPhone.model.ContactList',
    autoLoad: true,
    fields:['firstLetter', 'userId', 'userName', 'h', 'w', 'm', 'v', 'custom'],
    groupField: 'firstLetter',
    sorters: ['firstLetter', 'userId'],

    // Overriding the model's default proxy
//    proxy: {
//        type: 'memory',
//        reader: {
//            type: 'json',
//            rootProperty: 'root'
//        }
//    }
});
var store = Ext.getStore( "ContactList" );
//var array_values = new Array();
//for( var key in phoneBook )
    //array_values.push( phoneBook[key] );
//store.loadData( array_values );
store.loadData( [{firstLetter:'a', userId:'ali', userName:'ali', h:'04040', w:'04040', m:'04040', v:'04040', custom:'04040'}] );
我尝试了loadRawData和loadData,但都没有成功。。。 尝试使用代理(ajax/json/memory/array…您可以随意命名),但不使用


没有成功。我在这里缺少什么?

最简单的方法是在没有代理的情况下配置存储,一旦您准备好了数据,请拨打:


我终于解决了这个问题

  • 应该从网格视图中检索存储
  • loadData()由于某种原因无法工作。加载原始数据。为什么?不知道
  • 无论如何。。代码:

    var contactListView = Ext.ComponentQuery.query('contact-list-view')[0];
    var store = contactListView.getStore();
    var array_values = new Array();
    for( var key in phoneBook )
        array_values.push( phoneBook[key] );
    store.loadRawData( array_values );
    

    必须手动完成吗?或者我应该在网格的onRender listener中加载数据吗?store.loadData是从javascript加载数据的正确解决方案。使用grid.getView().refresh();要刷新网格,请尝试加载数据()和getview()。刷新()。。。然而,这一观点似乎并没有自我更新。它还是空的。我应该在开始时用一些数据填充商店/模型吗?您不需要手动刷新视图,
    loadData
    将完成此操作。您的代码中可能存在其他错误。做一把小提琴:可能是一只虫子。。。但是如何找到它呢??