07_数据绑定

数据绑定(Data Binding)

组件的绑定是将组件的配置与数据建立连接的一个过程。这能让数据的改变自动更新与之相关的组件的配置属性值。在一些情况下,这些配置值可以被终端用户操作而改变,比如文本框的值。这些属性默认情况下都是双向绑定的,以便配置属性的改变可以更新绑定数据的改变。

任何组件的配置属性都可以被绑定,只要它有一个setter方法。此例中,我们将绑定我们记录的firstName字段到我们的文本框的value配置属性上(这是文本框的默认绑定属性)。

Ext.Viewport.add({
    xtype: 'tabpanel',
    items: [{
        title: 'Employee Directory',
        xtype: 'grid',
        iconCls: 'x-fa fa-users',
        listeners: {
            itemtap: function(view, index, item, record) {
                Ext.Viewport.add({
                    xtype: 'formpanel',
                    title: 'Update Record',
                    width: 300,
                    floating: true,
                    centered: true,
                    modal: true,

                    record: record,
                    viewModel : {
                        data: {
                            employee: record
                        }
                    },
                    items: [{
                        xtype: 'textfield',
                        name: 'firstname',
                        label: 'First Name',
                        bind: '{employee.firstName}'

                    }, {
                        xtype: 'toolbar',
                        docked: 'bottom',
                        items: ['->', {
                            xtype: 'button',
                            text: 'Submit',
                            iconCls: 'x-fa fa-check',
                            handler: function() {
                                this.up('formpanel').destroy();
                            }
                        }, {
                            xtype: 'button',
                            text: 'Cancel',
                            iconCls: 'x-fa fa-close',
                            handler: function() {
                                this.up('formpanel').destroy();
                            }
                        }]
                    }]
                });
            }
        },
        store: {
            data: [{
                "firstName": "Jean",
                "lastName": "Grey",
                "officeLocation": "Lawrence, KS",
                "phoneNumber": "(372) 792-6728"
            }, {
                "firstName": "Phillip",
                "lastName": "Fry",
                "officeLocation": "Lawrence, KS",
                "phoneNumber": "(318) 224-8644"
            }, {
                "firstName": "Peter",
                "lastName": "Quill",
                "officeLocation": "Redwood City, CA",
                "phoneNumber": "(718) 480-8560"
            }]
        },
        columns: [{
            text: 'First Name',
            dataIndex: 'firstName',
            flex: 1
        }, {
            text: 'Last Name',
            dataIndex: 'lastName',
            flex: 1
        }, {
            text: 'Phone Number',
            dataIndex: 'phoneNumber',
            flex: 1
        }]
    }, {
        title: 'About Sencha',
        iconCls: 'x-fa fa-info-circle'
    }]
});

通过使用视图模板(ViewModel)的特性,基本上所有的绑定都是可以实现的。

 

视图模板是管理数据对象的一个类。它允许对里面的数据感兴趣的对象绑定到此模板,且当数据变化时作出相应的响应。视图模板隶属于定义它的视图。这是因为视图模板与视图相关联,它的子视图仅仅继承了父视图的视图模板的数据。

在上面的示例中,我们的文本域(即文本框)的值(即value配置属性)被绑定到了我们所选择行(即记录)的值上(在此是firstName)。如果你改变了表单中的字段值,所选记录的值也会改变,进而会影响行的值(使之产生变化)。

下一步

你可以看到,我们的代码变得有一些不规整。在下一章节,我们将讨论如何组织程序中的代码结构,以使程序有较强的可读性与扩展性。

深度探索

更多关于数据绑定的信息,请查阅我们的数据绑定概览章节(http://docs.sencha.com/extjs/6.2.1/guides/application_architecture/view_models_data_binding.html)。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值