extjs 5 将值设置为具有远程值的组合框时出错
Posted
技术标签:
【中文标题】extjs 5 将值设置为具有远程值的组合框时出错【英文标题】:extjs 5 Error while setting value to the combobox with remote values 【发布时间】:2015-07-01 08:25:18 【问题描述】:有带有组合框的表单面板
Ext.define('MyApp.admin.view.UserAddView',
extend: 'Ext.form.Panel',
requires: [
'MyApp.admin.controller.UserAddViewController'
],
controller: 'userAdd',
autoScroll: true,
frame:true,
items: [
xtype:'combobox',
fieldLabel: 'Roles',
collapseOnSelect: true,
editable: false,
multiSelect: true,
queryMode: 'remote',
queryParam: undefined,
displayField: 'authority',
bind:
store: 'role'
,
name: 'authorities'
]
);
然后我想从视图控制器为这个组合框动态设置值
var ob = 'authorities': 'ROLE_ADMIN_USERS';
var panelToAddName = Ext.create('MyApp.admin.view.UserAddView', );
panelToAddName.getForm().setValues(ob);
每次我收到错误时
Uncaught TypeError: undefined is not a function
在下面一行
panelToAddName.getForm().setValues(ob);
如果在combobox中本地指定store就不会出现这样的问题
store: ['ROLE_ADMIN_USERS']
我猜想有一个问题与调用 setValue 时未加载远程列表有关,但设置 queryMode: 'local',并从视图控制器加载带有列表的存储并不能解决问题。
有没有办法通过视图控制器远程加载列表为组合框设置值?
【问题讨论】:
【参考方案1】:我认为问题出在 combobox 的 bind 配置上。在 Ext5 文档中,combobox 没有名为 bind 的配置。
如果您的商店名称是 role,请尝试使用 store:'role'
而不是 bind。
希望这会奏效。
【讨论】:
感谢您的回答,不幸的是,当我尝试创建视图时,设置 store:'role' 会导致错误“无法读取未定义的属性 'on'”。顺便说一句,你可以在这里看到docs.sencha.com/extjs/5.0/whats_new/5.0.1/whats_new.html“开发人员现在可以使用“选择”作为某些组件的可绑定属性。这些组件包括 ComboBox...”所以从 extjs 5.0.1 开始,可以在组合框中绑定存储跨度> 【参考方案2】:我终于通过设置解决了这个问题
queryMode: 'local'
然后从视图控制器加载存储
var storeRole = me.getViewModel().getStore('role');
storeRole.load();
然后是组合框的bindStore
var combobox = panelToAddName.items.getAt(0).items.getAt(0).items.getAt(0).items.getAt(2);
combobox.bindStore(storeRole);
如果有人知道如何以更简单的方式获得组合框,欢迎您发表评论。以下没有bindStore()方法
Ext.ComponentQuery.query('combobox')[0]
【讨论】:
panelToAddName.down('combobox[name=authorities]');
在组合上配置一个引用名称,然后在控制器中您可以使用 this.getView().lookupReference('yourReferenceName')。当然,每个视图应该是唯一的;)以上是关于extjs 5 将值设置为具有远程值的组合框时出错的主要内容,如果未能解决你的问题,请参考以下文章
Extjs 组合框显示具有从数据存储 rest/jsp 请求中获取的值的记录
将字典中具有相同值的所有键组合在一起,并将键与值交换,将值与键交换