一对多数据绑定

One to many data binding

我有一种情况,我想从一个输入(fiddle 中的主输入字段)获取值并将其绑定到其他输入字段。

https://fiddle.sencha.com/#view/editor&fiddle/2001

由于相当复杂的体系结构,这些输入字段位于不同的组件中。我想知道将主输入字段的值绑定到所有其他字段的最佳方法是什么,有没有类似的例子我可以看一下?

谢谢。

正如您所说,输入字段来自不同的组件,您可能不想为所有组件创建 viewModel。

我已经创建了一个侦听器并获得了所有要设置值的相应字段的引用,并在主输入字段的更改事件中设置了值。

Ext.application({
name : 'Fiddle',

launch : function() {
    Ext.create('Ext.panel.Panel', {
        title: 'Main Input field',
        width: 200,
        items:[{
            xtype: 'textfield',
            listeners:{
            change:function(cmp, newValue, oldValue, eOpts){
                if(newValue){
                    var inputFields = Ext.ComponentQuery.query('textfield[type=inputField]');
                    for(var k in inputFields){
                        inputFields[k].setValue(newValue);
                    }    
                }
            }
        }
        }],
        renderTo: Ext.getBody()
      });

    Ext.create('Ext.panel.Panel', {
        title: 'Input field 1',
        width: 200,
        items:[{
            xtype: 'textfield',
            type:'inputField'
        }],
        renderTo: Ext.getBody()
      });
    Ext.create('Ext.panel.Panel', {
        title: 'Input field 2',
        width: 200,
        items:[{
            xtype: 'textfield',
            type:'inputField'
        }],
        renderTo: Ext.getBody()
      });
    Ext.create('Ext.panel.Panel', {
        title: 'Input field 3',
        width: 200,
        items:[{
            xtype: 'textfield',
            type:'inputField'
        }],
        renderTo: Ext.getBody()
      });
    }

});

我在共享 fiddle 中测试过,它工作正常。