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】:

我认为问题出在 comboboxbind 配置上。在 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 请求中获取的值的记录

将字典中具有相同值的所有键组合在一起,并将键与值交换,将值与键交换

ExtJS 4 - 当列编辑器是组合框时如何避免网格列值变为空?

ExtJS 组合框不呈现

ExtJS组合框无法渲染

组合加载后如何设置 extjs 组合的值?