2016-06-13 113 views
0

如何将一个组合框的名称(即显示文本)绑定到某个其他组件?如何绑定到组合框显示值?

我有一个名为'combo'的组合框,我在其他地方的面板中有一个标签,它使用组合显示值更新自己。这两个小部件通过ViewModel绑定。

如果我这样设置绑定:

combo.setConfig({bind: {value: bindName}}; 

则标签将显示组合(即密钥)的

如果我这样做:

combo.setConfig({bind: {name: bindName}}; 

然后我收到此错误信息:

“无法在Ext.form.field.ComboBox绑定的名字 - 缺少的setName 方法”

我已经通过在组合框其他getter/setter方法没有成功了,尝试过:

combo.setConfig({绑定:{名称:displayField}};

组合。调用setConfig({绑定:{名称:rawValue}};

小提琴:https://fiddle.sencha.com/#fiddle/1bum

+0

的组合框的'name'不是显示文本,但形式字段的名称(如果名称是'combo1',形式将值'value'作为'combo1:value'提交,或将其存储在名为'combo1'的模型字段中。你试图绑定到“显示值”,它没有属性,也没有配置选项来设置它。我担心你必须手动进行绑定。你想达到什么目的? – Alexander

+0

基本上我想绑定一个组合显示/值对。我想在我的应用程序的其他位置显示面板上的显示文本。 –

+0

这里是演示问题的小提琴:https://fiddle.sencha.com/#fiddle/1bum –

回答

2

添加一个参考到组合和结合于该选择:

Ext.define('MyApp.view.TestView', { 
    extend: 'Ext.panel.Panel', 
    layout: 'form', 

    viewModel: { 
     type: 'test' // references alias "viewmodel.test" 
    }, 

    bind: { 
     title: 'Hello {name} {theCombo.selection.name}' 
    }, 

    items: [{ 
     xtype: 'textfield', 
     fieldLabel: 'first name', 
     bind: '{name}' 

    }, { 
     valueField: 'id', 
     displayField: 'name', 
     fieldLabel: 'last name', 
     reference: 'theCombo', 
     xtype: 'combo', 
     bind: '{combo}', 
     store: { 
      fields: ['id', 'name'], 
      data: [{ 
       "id": "1", 
       "name": "Jonston" 
      }, { 
       "id": "2", 
       "name": "Billson" 
      }, { 
       "id": "3", 
       "name": "Wayneston" 
      }] 
     } 
    }] 
}); 
+0

谢谢你这么多! –