【问题标题】:ExtJs ViewModel Bind Field doesn't work on arrayExtJs ViewModel 绑定字段不适用于数组
【发布时间】:2014-10-15 14:56:57
【问题描述】:

我正在尝试将我的表单的某些字段与我的视图模型提供的数据绑定(两种方式绑定)。 当我绑定一个简单的字符串时,它工作得很好。但是当我尝试将表单字段绑定到视图模型中的数组字段时,视图模型不会考虑修改。

这是我的模特

Ext.define('Front.model.User', {
    extend : 'Ext.data.Model',
    fields : [{
        name : 'id',
        type : 'int'
    }, {
        name : 'name',
        type : 'string'
    }, {
        name : 'email',
        type : 'string'
    }, {
        name : 'last_connection',
        type : 'date',
        dateFormat : 'Y-m-d H:i:s'
    }, {
        name : 'birth',
        type : 'date',
        dateFormat : 'Y-m-d H:i:s'
    }, {
        name : 'schedule',
        type : 'auto'
    }]
});

这是我的视图模型

Ext.define('Front.view.user.SheetModel', {
    extend : 'Ext.app.ViewModel',
    alias : 'viewmodel.sheet',
    requires : ['Front.model.User'],
    data : {
        currentUser:null
    },
    model : 'Front.model.User'
});

这是我的表格

Ext.define('Front.view.user.Sheet', {
    extend : 'Ext.form.Panel',
    requires : ['Front.view.user.SheetController'],
    controller : 'sheet',
    viewModel : {
        type : 'sheet'
    },
    config : {
        currentUser : null
    }, {
        xtype : 'textfield',
        fieldLabel : 'De',
        name : 'morningstarttest',
        width : 60,
        bind : {
            value : '{currentUser.schedule.lundi.am.start}'
        }
    }
});

绑定第一次显示正确的值,但如果我更改值则不会更新。

模型中的 'schedule' 字段是一个数组。

有什么办法可以解决这个问题吗?

【问题讨论】:

    标签: arrays extjs bind viewmodel extjs5


    【解决方案1】:

    您的代码如何知道要绑定数组中的哪个项目?您需要执行以下操作:

    {currentUser.schedule[0].lundi.am.start}
    

    为了指定一个数组索引。如果你能做到这一点,我不记得了,那是因为这感觉就像一个坏主意。我建议重新考虑你正在尝试做的事情。与其将时间表作为模型中的一个字段,不如查看关联。

    【讨论】:

    • 我目前不在这个项目上。我会尽快尝试。不过,谢谢你的回答。它只是让我以其他方式思考。
    猜你喜欢
    • 1970-01-01
    • 2017-07-13
    • 2015-11-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多