选择字段未在构建时加载
Posted
技术标签:
【中文标题】选择字段未在构建时加载【英文标题】:selectfield not loading on build 【发布时间】:2013-09-22 23:35:17 【问题描述】:我几乎要放弃了。我已经尝试了将近一个月来使用 sencha touch 2.2.1 和 sencha cmd 3.1.2.324 开发一个应用程序。所有工作都在开发中,但在创建生产文件(sencha app build)后,我的选择字段不加载。
实际上,我已经隔离了应用程序上的所有页面,并且只使用了几张卡片。从 chrome 我可以检查 web 服务是否被调用并按预期返回。控制台未显示任何错误,但选择字段仍为空。
有什么线索吗?
面板:
Ext.define('MySecondApp.view.Home',
extend: 'Ext.Panel',
xtype: 'mg_home',
config:
title: 'Home',
id: 'tabHome',
iconCls: 'info',
layout: 'vbox',
xtype: 'panel',
items:
[
docked: 'top',xtype: 'titlebar',title: 'Home',
xtype: 'selectfield',
name: 'selectMesHome',
id: 'selectMesHome',
action: 'selectMesHome',
label: 'Mes', /*TODO*/
scrollable: true,
displayField: 'dc_data',
valueField: 'vl_data',
store: 'mesesHome'
,
xtype: 'panel',
id: 'home_content',
html: 'carregando...'
]
);
型号:
Ext.define('MySecondApp.model.Meses',
extend: 'Ext.data.Model',
config:
fields :
[
name:'dc_data', type:'string',
name:'vl_data', type:'string'
]
);
商店:
Ext.define('MySecondApp.store.mesesHome',
extend: 'Ext.data.Store',
storeId: 'mesesHomeStore',
config:
model: 'MySecondApp.model.Meses',
autoLoad: true,
proxy:
type: 'ajax',
url: 'http://www.meusgastos.com.br/touch/rest/meses.php',
reader:
type: 'json',
root: 'data'
);
ajax 请求一些以前保存的凭据(并且经过测试和工作)。响应将是:
"HEADER": [],
"vl_atual": "201308",
"data": [
"dc_data": "Agosto/2013",
"vl_data": "201308"
,
"dc_data": "Julho/2013",
"vl_data": "201307"
,
"dc_data": "Junho/2013",
"vl_data": "201306"
,
"dc_data": "Maio/2013",
"vl_data": "201305"
,
"dc_data": "Abril/2013",
"vl_data": "201304"
,
"dc_data": "Março/2013",
"vl_data": "201303"
]
【问题讨论】:
【参考方案1】:进行这些更改并重试
店内 (MySecondApp.store.mesesHome
)
1) 将storeId
放入配置中
2) 将阅读器root
更改为rootProperty
所以,商店看起来像这样
Ext.define('MySecondApp.store.mesesHome',
extend: 'Ext.data.Store',
config:
storeId: 'mesesHomeStore',
model: 'MySecondApp.model.Meses',
autoLoad: true,
proxy:
type: 'ajax',
url: 'http://www.meusgastos.com.br/touch/rest/meses.php',
reader:
type: 'json',
rootProperty: 'data'
);
在视图中 (MySecondApp.view.Home
)
这个改变不是必须的,但我还是建议你这样做。
将 storeId 赋予 selectfield 的存储属性
xtype: 'selectfield',
name: 'selectMesHome',
id: 'selectMesHome',
action: 'selectMesHome',
label: 'Mes', /*TODO*/
scrollable: true,
displayField: 'dc_data',
valueField: 'vl_data',
store: 'mesesHomeStore'
,
【讨论】:
太棒了!如此简单,我也到目前为止得到它! :) 谢谢以上是关于选择字段未在构建时加载的主要内容,如果未能解决你的问题,请参考以下文章