【问题标题】:ExtJS Model - Concatenate fieldsExtJS 模型 - 连接字段
【发布时间】:2013-10-02 14:37:55
【问题描述】:

模型中是否有一种合理的方式来连接两个字段,如下所示:

Ext.define('model.Person', {
    extend: 'Ext.data.Model',
    idProperty: 'Id',
    fields: [
        { name: 'Id', type: 'int' },
        { name: 'FirstName', type: 'string' },
        { name: 'LastName', type: 'string' },
        { name: 'FullName', type: 'string', mapping: 'FirstName + " " + LastName' }
    ]
});

我尝试了很多方法,但似乎都无法奏效。

我打算在模型中使用一个函数将两个字段粘在一起,但我还需要将它用作“itemselector”(自定义控件)内的显示字段并动态切换它,并且该控件似乎没有喜欢 'FullName()' 作为显示字段。

任何想法都非常感谢。

【问题讨论】:

    标签: extjs extjs4


    【解决方案1】:

    使用 Ext.data.Field 的 convert 配置:http://docs.sencha.com/extjs/4.2.1/#!/api/Ext.data.Field-cfg-convert

    { name: 'FirstName', type: 'string' },
    { name: 'LastName', type: 'string' },
    {
        name: 'FullName',
        type: 'string',
        convert: function( v, record ) {
           return record.get( 'FirstName' ) + ' ' + record.get( 'LastName' )
        }
    }
    

    这是一个活生生的例子:https://fiddle.sencha.com/#fiddle/mf

    【讨论】:

    • 完美,感谢您提供的正是我想要的。不幸的是,我注意到它在向商店发出请求时会附加新属性,因此复合值会沿着线路传递,这是我试图避免的,无论哪种方式,都是很好的答案。
    • 要防止该字段作为请求的一部分提交,只需在字段定义中添加 persist: false 即可。
    • 更正:转换后的字段没有传下来我没有更新我的服务器端代码!
    猜你喜欢
    • 2012-05-17
    • 2012-04-07
    • 1970-01-01
    • 2021-08-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-02-19
    • 1970-01-01
    相关资源
    最近更新 更多