Ext.getCmp()为空或不是对象

紫砂壶泡咖啡 2014-01-24 10:55:23
我想在下拉框自动填充原有数据,不过数据库里存的是user_id,而要显示的是user_name。所以,我只能先从表里把user_id取出来,再去user表里找user_name.但是我一发请求页面就报错:Ext.getCmp()为空或不是对象。如果我改成文本框的形式直接显示user_id是有值的,帮我看一下这段代码有什么问题:xtype:'combo',
fieldLabel:'操作人',
allowBlank:false,
blankText:'操作者姓名不能为空',
name:'userId',
//id:'user2',
store:new Ext.data.Store({
autoLoad:false,
reader:new Ext.data.JsonReader({
totalRecords:"totalCount",
root:"list",
id:"userId" },
Ext.data.Record.create([
{name:'deptId'},
{name:'userName'},
{name:'userEmail'}
])
),
proxy:new Ext.data.HttpProxy({
url:'getUserById.action?userId='+Ext.getCmp('userId').getValue()
}/* ,{ url:'showuser.action?deptId='+Ext.getCmp('dept2').getValue()
} */) }),
allQuery:'alltask',
triggerAction:'all',
editable:false,
loadingText:'正在加载员工列表',
displayField:'userName',
valueField:'userId',
emptyText:'请输入操作者姓名',
width:190,
mode:'remote'
...全文
138 点赞 收藏 7
写回复
7 条回复
领尚 2014年02月06日
执行逻辑上的问题,在渲染之前使用了元素,就是在初始化时,userId还没有生成,这个时候你就用Ext.getCmp("userID"),是没有值的,你可以把store的创建代码另外独立出来,在第一次调用时用给定的初始值,而不是使用Ext.getCmp("userID")的值,另外,如果想动态改变combobox的选项,应该是监听combobox的change
回复 点赞
紫砂壶泡咖啡 2014年01月24日
引用 1 楼 showbo 的回复:
getCmp( id ) : Object This is shorthand reference to Ext.ComponentManager.get. Looks up an existing Component by id Available since: 1.1.0 Parameters id : String The component id 自己看API,你有给那个组件配置id没有
我配置了id,调用那个id也是会报这样的错误
回复 点赞
getCmp( id ) : Object This is shorthand reference to Ext.ComponentManager.get. Looks up an existing Component by id Available since: 1.1.0 Parameters id : String The component id 自己看API,你有给那个组件配置id没有
回复 点赞
引用 4 楼 qq455893891 的回复:
[quote=引用 3 楼 showbo 的回复:] [quote=引用 2 楼 qq455893891 的回复:] [quote=引用 1 楼 showbo 的回复:] getCmp( id ) : Object This is shorthand reference to Ext.ComponentManager.get. Looks up an existing Component by id Available since: 1.1.0 Parameters id : String The component id 自己看API,你有给那个组件配置id没有
我配置了id,调用那个id也是会报这样的错误[/quote] 那只能说你调用的位置不对,还没有生成那个对象。自己搞清楚对象生成循序[/quote] 我找了下原因,发现时加载延迟的问题。在上一条数据还没返回的时候,下一条请求已经发出来了,所以报空。但是我不知道怎么解决,有没有好的办法推荐下[/quote] 后续处理放到回调成功的里面,要不就要和#5说的设置成同步的了
回复 点赞
东_晓 2014年01月24日
请求数据的时候设置为同步加载就行了
回复 点赞
紫砂壶泡咖啡 2014年01月24日
引用 3 楼 showbo 的回复:
[quote=引用 2 楼 qq455893891 的回复:] [quote=引用 1 楼 showbo 的回复:] getCmp( id ) : Object This is shorthand reference to Ext.ComponentManager.get. Looks up an existing Component by id Available since: 1.1.0 Parameters id : String The component id 自己看API,你有给那个组件配置id没有
我配置了id,调用那个id也是会报这样的错误[/quote] 那只能说你调用的位置不对,还没有生成那个对象。自己搞清楚对象生成循序[/quote] 我找了下原因,发现时加载延迟的问题。在上一条数据还没返回的时候,下一条请求已经发出来了,所以报空。但是我不知道怎么解决,有没有好的办法推荐下
回复 点赞
引用 2 楼 qq455893891 的回复:
[quote=引用 1 楼 showbo 的回复:] getCmp( id ) : Object This is shorthand reference to Ext.ComponentManager.get. Looks up an existing Component by id Available since: 1.1.0 Parameters id : String The component id 自己看API,你有给那个组件配置id没有
我配置了id,调用那个id也是会报这样的错误[/quote] 那只能说你调用的位置不对,还没有生成那个对象。自己搞清楚对象生成循序
回复 点赞
发动态
发帖子
JavaScript
创建于2007-09-28

5.1w+

社区成员

22.3w+

社区内容

Web 开发 JavaScript
社区公告
暂无公告