将值设置为具有远程值的组合框时发生extjs 5错误
有带组合框的窗体面板将值设置为具有远程值的组合框时发生extjs 5错误,extjs,combobox,extjs5,Extjs,Combobox,Extjs5,有带组合框的窗体面板 Ext.define('MyApp.admin.view.UserAddView', { extend: 'Ext.form.Panel', requires: [ 'MyApp.admin.controller.UserAddViewController' ], controller: 'userAdd', autoScroll: true, frame:true, items: [{
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);
var storeRole = me.getViewModel().getStore('role');
storeRole.load();
每次我收到一个错误
Uncaught TypeError: undefined is not a function
在下面的行中
panelToAddName.getForm().setValues(ob);
如果存储是在combobox中本地指定的,则不存在这样的问题
store: ['ROLE_ADMIN_USERS']
我猜在调用setValue时,远程列表没有加载是有问题的,但是设置queryMode:“local”,从视图控制器加载带有列表的存储并不能解决这个问题
有没有一种方法可以通过视图控制器远程加载列表来设置组合框的值?我认为问题在于组合框的绑定配置。在Ext5文档中,对于组合框,没有名为bind的配置 如果您的门店名称是角色,请尝试编写
门店:'role'
,而不是绑定
希望这能奏效 我终于通过设置
queryMode: 'local'
然后从视图控制器加载存储
var ob = {'authorities': 'ROLE_ADMIN_USERS'};
var panelToAddName = Ext.create('MyApp.admin.view.UserAddView', {});
panelToAddName.getForm().setValues(ob);
var storeRole = me.getViewModel().getStore('role');
storeRole.load();
然后绑定组合框的存储
var combobox = panelToAddName.items.getAt(0).items.getAt(0).items.getAt(0).items.getAt(2);
combobox.bindStore(storeRole);
如果有人知道如何以更简单的方式获得组合框,欢迎您发表评论。以下内容没有bindStore()方法
感谢您的回答,很遗憾,在尝试创建视图时,设置store:“role”会导致错误“无法读取未定义的”的“on”属性。顺便说一句,您可以在这里看到“开发人员现在可以在某些组件上使用“selection”作为可绑定属性。这些组件包括ComboBox…”,因此自extjs 5.0.1以来,可以将ComboBox
panelToAddName.down('ComboBox[name=Authories]')中的存储绑定到ComboBox中代码>在组合上配置引用名称,然后在控制器中可以使用此.getView().lookupReference('yourReferenceName')。当然,每个视图都应该是唯一的;)