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

时间:2021-08-15 07:36:31
我想在下拉框自动填充原有数据,不过数据库里存的是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' 

7 个解决方案

#1


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没有

#2


引用 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也是会报这样的错误

#3


引用 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也是会报这样的错误


那只能说你调用的位置不对,还没有生成那个对象。自己搞清楚对象生成循序

#4


引用 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也是会报这样的错误


那只能说你调用的位置不对,还没有生成那个对象。自己搞清楚对象生成循序

我找了下原因,发现时加载延迟的问题。在上一条数据还没返回的时候,下一条请求已经发出来了,所以报空。但是我不知道怎么解决,有没有好的办法推荐下

#5


请求数据的时候设置为同步加载就行了

#6


引用 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也是会报这样的错误


那只能说你调用的位置不对,还没有生成那个对象。自己搞清楚对象生成循序

我找了下原因,发现时加载延迟的问题。在上一条数据还没返回的时候,下一条请求已经发出来了,所以报空。但是我不知道怎么解决,有没有好的办法推荐下


后续处理放到回调成功的里面,要不就要和#5说的设置成同步的了

#7


执行逻辑上的问题,在渲染之前使用了元素,就是在初始化时,userId还没有生成,这个时候你就用Ext.getCmp("userID"),是没有值的,你可以把store的创建代码另外独立出来,在第一次调用时用给定的初始值,而不是使用Ext.getCmp("userID")的值,另外,如果想动态改变combobox的选项,应该是监听combobox的change

#1


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没有

#2


引用 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也是会报这样的错误

#3


引用 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也是会报这样的错误


那只能说你调用的位置不对,还没有生成那个对象。自己搞清楚对象生成循序

#4


引用 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也是会报这样的错误


那只能说你调用的位置不对,还没有生成那个对象。自己搞清楚对象生成循序

我找了下原因,发现时加载延迟的问题。在上一条数据还没返回的时候,下一条请求已经发出来了,所以报空。但是我不知道怎么解决,有没有好的办法推荐下

#5


请求数据的时候设置为同步加载就行了

#6


引用 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也是会报这样的错误


那只能说你调用的位置不对,还没有生成那个对象。自己搞清楚对象生成循序

我找了下原因,发现时加载延迟的问题。在上一条数据还没返回的时候,下一条请求已经发出来了,所以报空。但是我不知道怎么解决,有没有好的办法推荐下


后续处理放到回调成功的里面,要不就要和#5说的设置成同步的了

#7


执行逻辑上的问题,在渲染之前使用了元素,就是在初始化时,userId还没有生成,这个时候你就用Ext.getCmp("userID"),是没有值的,你可以把store的创建代码另外独立出来,在第一次调用时用给定的初始值,而不是使用Ext.getCmp("userID")的值,另外,如果想动态改变combobox的选项,应该是监听combobox的change