gpt4 book ai didi

sencha-touch - 在 sencha touch 2 中动态加载列表

转载 作者:行者123 更新时间:2023-12-04 05:09:30 24 4
gpt4 key购买 nike

我有一个设置了卡片布局的 Sencha Touch 2.0 应用程序。它包含一个仪表板,其中包含用户可以单击的图标和一个客户列表(xtype:'list')。加载应用程序时,我会加载应用程序中的所有“卡片”,包括客户列表,但我不会(通过代理)加载数据,除非设置了 localStorage 变量。加载所有内容后,我通过检查 localStorage 变量来检查用户是否应该自动登录。如果他们自动登录,那么我的应用程序可以完美运行。如果他们不是,我会向他们展示“登录”卡,它基本上是一个登录表单。一旦他们提交了这个登录表单,我就会执行一个 ajax 调用。如果返回正确,我将它们发送到“仪表板”卡。但在此之前,我尝试使用以下方法通过 ajax 调用加载客户列表:

var tmpId = { id: example.id };

var cListStore = Ext.create('example.store.CustomerList');
cListStore.getProxy().setExtraParams(tmpid);
cListStore.load();

通过上面的代码,我可以看到我的代理调用正在发生,并且我可以看到响应是正确的。但是,当我看到仪表板并单击“客户”图标时,我看到一个空列表。我的工具栏在那里,甚至我列表中的 indexBar 也在那里,只是没有数据。我不确定我在这里做错了什么。我在下面包括了我的 ListView 、商店和模型,希望这能帮助任何看到这个的人:

Ext.define('example.view.CustomerList', {
extend: 'Ext.Container',
id: 'customerListContainer',
xtype: 'customerlist',
config: {
layout: 'fit',
items: [{
xtype: 'toolbar',
docked: 'top',
title: 'Customers',
items: [{
xtype: 'button',
text: 'Home',
id: 'customerListHomeButton',
ui: 'back'
}]
}, {
xtype: 'list',
itemTpl: '<div class="contact">{first_name} <strong>{last_name}</strong> </div>',
store: 'CustomerList',
id: 'customer_list',
grouped: true,
indexBar: true
}]
}
});

Ext.define('example.store.CustomerList', {
extend: 'Ext.data.Store',
id: 'customerListStore',
requires: ['example.model.CustomerList'],
config: {
model: 'example.model.CustomerList',
sorters: 'last_name',
/*
* This actually makes the ajax request
*/
proxy: {
type: 'ajax',
url: '/example/api/customerList.php',
extraParams: {
id: example.id
},
reader: {
type: 'json'
}
},
autoLoad: ((example.id > 0) ? true : false), //only fetch the data if we have a id, or else we'll get an error from our api

/*
* Set the group headers to the first letter of the last name
*/
grouper: {
groupFn: function (record) {
return record.get('last_name')[0];
}
}
}
});

Ext.define('example.model.CustomerList', {
extend: 'Ext.data.Model',
config: {
/*
* Define the fields we get back from our ajax request
*/
fields: [
'first_name',
'last_name',
'address1',
'address2',
'city',
'state',
'zip_code',
'phone_daytime',
'phone_evening',
'phone_cell',
'email']
}
});

我还尝试在客户列表商店中放置一个 storeId,然后使用以下代码而不是调用 Ext.create():

Ext.StoreManager.get('storeid').load()

这产生了相同的结果。我可以看到代理正在正确获取数据,但它仍在我的列表组件中呈现。

最佳答案

我想通了,我删除了这些行:

var cListStore = Ext.create('example.store.CustomerList');
cListStore.getProxy().setExtraParams(tmpid);
cListStore.load();

我在其位置添加了以下内容:

Ext.getStore('CustomerList').getProxy().setExtraParams(tmpid);
Ext.getStore('CustomerList').load();

基本上我不需要创建我的商店的新实例,一个已经创建了所以我只需要一种方法来识别它 (Ext.getStore) 然后加载它。感谢所有关注它的人。

关于sencha-touch - 在 sencha touch 2 中动态加载列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9332833/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com