extjs 5使用远程值为组合框设置值时出错

时间:2015-07-01 08:25:18

标签: 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: [{
        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: ['ROLE_ADMIN_USERS']

我猜测在调用setValue时没有加载与远程列表相关的问题,但设置queryMode:'local',并从视图控制器加载带有列表的商店并不能解决问题。

有没有办法通过视图控制器中的远程加载列表为组合框设置值?

2 个答案:

答案 0 :(得分:0)

我认为问题在于组合框 bind 配置。在Ext5 doc中,组合框没有名称 bind 的配置。

如果您的商店名称是角色,请尝试撰写store:'role'而不是 bind

希望这会奏效。

答案 1 :(得分:0)

我终于通过设置来解决问题了 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( '组合框')[0]