如何创建自定义 ExtJS 表单字段组件?

2024-01-24

我想创建自定义 ExtJS表单域组件中使用其他 ExtJS 组件(例如 TreePanel)。我怎样才能最轻松地做到这一点?

我读过的文档扩展表单字段基础 http://docs.sencha.com/ext-js/4-0/#/api/Ext.form.field.Base但我不想通过以下方式定义字段主体fieldSubTpl。我只想编写创建 ExtJS 组件的代码以及一些获取和设置值的其他代码。

Update:概括的目的如下:

  • 这个新组件应该适合 将 GUI 形成为字段。它应该有 标签和相同的对齐方式(标签, 不需要其他领域的anchor) 进一步的黑客攻击。

  • 可能,我有 写一些getValue、setValue 逻辑。我宁愿将其嵌入到这个组件中,而不是制作单独的代码,将内容复制到我还必须管理的进一步隐藏的表单字段中。


为了扩展 @RobAgar 的答案,遵循我为 ExtJS 3 编写的一个非常简单的日期时间字段,它是我为 ExtJS 4 编写的快速端口。重要的是使用Ext.form.field.Field http://docs.sencha.com/extjs/4.2.1/#!/api/Ext.form.field.Field混合。该 mixin 为表单字段的逻辑行为和状态提供了一个通用接口,包括:

字段值的 getter 和 setter 方法 用于跟踪价值和有效性变化的事件和方法 触发验证的方法

这可用于组合多个字段并将它们作为一个字段。对于完全自定义字段类型,我建议扩展Ext.form.field.Base http://docs.sencha.com/extjs/4.2.1/#!/api/Ext.form.field.Base

这是我上面提到的例子。即使对于像日期对象这样的对象,我们需要在 getter 和 setter 中格式化数据,它也应该能够轻松地完成此操作。

Ext.define('QWA.form.field.DateTime', {
    extend: 'Ext.form.FieldContainer',
    mixins: {
        field: 'Ext.form.field.Field'
    },
    alias: 'widget.datetimefield',
    layout: 'hbox',
    width: 200,
    height: 22,
    combineErrors: true,
    msgTarget: 'side',
    submitFormat: 'c',

    dateCfg: null,
    timeCfg: null,

    initComponent: function () {
        var me = this;
        if (!me.dateCfg) me.dateCfg = {};
        if (!me.timeCfg) me.timeCfg = {};
        me.buildField();
        me.callParent();
        me.dateField = me.down('datefield')
        me.timeField = me.down('timefield')

        me.initField();
    },

    //@private
    buildField: function () {
        var me = this;
        me.items = [
        Ext.apply({
            xtype: 'datefield',
            submitValue: false,
            format: 'd.m.Y',
            width: 100,
            flex: 2
        }, me.dateCfg),
        Ext.apply({
            xtype: 'timefield',
            submitValue: false,
            format: 'H:i',
            width: 80,
            flex: 1
        }, me.timeCfg)]
    },

    getValue: function () {
        var me = this,
            value,
            date = me.dateField.getSubmitValue(),
            dateFormat = me.dateField.format,
            time = me.timeField.getSubmitValue(),
            timeFormat = me.timeField.format;
        if (date) {
            if (time) {
                value = Ext.Date.parse(date + ' ' + time, me.getFormat());
            } else {
                value = me.dateField.getValue();
            }
        }
        return value;
    },

    setValue: function (value) {
        var me = this;
        me.dateField.setValue(value);
        me.timeField.setValue(value);
    },

    getSubmitData: function () {
        var me = this,
            data = null;
        if (!me.disabled && me.submitValue && !me.isFileUpload()) {
            data = {},
            value = me.getValue(),
            data[me.getName()] = '' + value ? Ext.Date.format(value, me.submitFormat) : null;
        }
        return data;
    },

    getFormat: function () {
        var me = this;
        return (me.dateField.submitFormat || me.dateField.format) + " " + (me.timeField.submitFormat || me.timeField.format)
    }
});
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何创建自定义 ExtJS 表单字段组件? 的相关文章

  • Laravel 表单标签中内联“必需”星号

    我正在尝试为 Laravel 中的必填字段添加红色星号 但我不确定如何将它们添加到标签中 我目前正在做的是 Form label took act or sat Did you or will you take the SAT or ACT
  • Symfony2 - ReferencedColumnName id 为空

    我要放弃食谱文章了表单集合 http symfony com doc current cookbook form form collections html但是 当尝试将其保留到数据库时 我收到约束冲突错误 引用的列名称 id 为空 SQL
  • 使用 Javascript 提交表单

    我的一些表单是用Javascript JQuery提交的 所以不会发生页面刷新 但我注意到我的两台计算机之间的浏览器存在奇怪的行为 在一台计算机 以及我测试过的所有浏览器 上 我的表单提交按预期执行 我的另一台电脑 Mac 时好时坏 我将提
  • Android 动态添加联系表单

    Hi 我想实现如图所示的表单 不知道他们如何动态添加字段 这是列表视图吗 可扩展列表 用户可以在运行时添加和删除 我已经检查了包含子项目的可扩展列表 但我们在数组中定义子元素 在图像中它们动态添加 任何指南 链接 Thanks Custom
  • Angular 2.0 是否有类似于 Angular 1 中的 `$setPristine` 函数?

    提交表格后 pristine输入的状态仍然是 假 我不知道如何重置pristine陈述为真 在 Angular 1 中 我会使用 setPristine功能 我查看了 API 和开发人员指南 没有 API 可以将输入重置为原始状态 Inst
  • Django 表单验证消息未显示

    我试图限制可以以表单上传的文件类型 大小和扩展名 该功能似乎有效 但未显示验证错误消息 我意识到if file size gt 4 1024 1024可能不是最好的方法 但我稍后会处理这个问题 这是 forms py class Produ
  • 是否可以使用 CSS 设置禁用的 INPUT 元素的样式?

    我需要风格disabled
  • 如何使用 D3 (或只是 javascript)将表单选项设置为“选择”

    有没有一种方法可以搜索选择表单元素中的所有选项 并将具有匹配值的选项指定为 已选择 var xStat G var statOptions Points PTS Goals G Assists A Penalty Minutes PIM c
  • 如何使用 JSON 结果更新 Extjs 进度条?

    我在让进度条从 Json 结果中检索进度并根据每 10 秒的计时器检查更新进度条时遇到一些困难 我可以创建这样的 json 结果 success true progress 0 2 我想总体思路是 我需要一个间隔设置为 10 秒的任务 并让
  • 在 HTML
    中发布额外的值

    我有一个简单的表单 它传递一个值
  • html 文件上传的默认文件夹和文件名

    我正在使用 jQuery Ajax 插件将图像文件从本地计算机上传到网络服务器 该网页呈现一个标记为Upload Image File 用户按下按钮并从浏览器显示的弹出目录列表中选择要上传的文件 服务器上的 PHP 存储图像文件 一切正常
  • 使用 AWS API Gateway 和 Lambda 从 multipart/form-data 获取非文件正文

    我正在尝试从multipart form data POST通过 API 网关连接到我的 AWS Lambda Web 服务 超文本传输 协议POST具有内容类型 multipart form data 和 URL 编码的正文 文件数据也在
  • Extjs - 为选项卡生成唯一的 url

    据我了解 ExtJS 使用 AJAX 进行所有服务器端通信 并且理想情况下每个应用程序只有一页 但我正在探索为 ExtJS 选项卡生成唯一 URL 的可能性 然后用户可以从地址栏复制该 URL 以供以后使用 传统 Web 应用程序方法 使页
  • 表单提交后 Django 重定向不起作用

    Django 新手 所以这个可能有一个非常简单的答案 但我一生都找不到具体的解决方案 我只是想在使用 FileField 提交表单后重定向到新的 URL 我可以单独导航到该 URL 效果很好 文件上传正确 因此我知道它已正确验证 但重定向返
  • 如何将一个表单的文件上传字段中的值复制到另一个表单的文本字段?

    我有一页上有两种不同的表格 第一个表单允许用户上传图像文件并通过电子邮件发送 第二个表单根据用户输入生成 URL 为了将图像名称添加到 URL 我需要在第二个表单中有一个字段 该字段从第一个表单的字段中复制图像名称 我不想让用户浏览并选择图
  • 未捕获的类型错误:无法读取未定义的属性“prop”

    我有 6 个输入复选框 如果选中的复选框超过 3 个 则最后一个复选框将被取消选中 为了更好地理解 请参阅我之前的question https stackoverflow com questions 35195235 if checkbox
  • 多文件上传字段的重力形式预览缩略图

    我们使用重力形式将多个图像附加到图库自定义字段并创建新帖子 我们不知道如何在 HTML5 导入字段下显示图像缩略图 而不仅仅是在提交表单之前显示文件名 之前的答案仅涵盖单个文件上传 图片上传重力形式预览 https stackoverflo
  • 使用 keyup 上的 Submit() 提交表单两次

    我有一个与此类似的 jQuery HTML 代码
  • AJAX 表单正在向自身提交?

    我不知道今晚发生了什么 但我似乎无法让 AJAX 工作 提交表单后 它会使用 URL 中的值刷新页面 我正在使用具有提交处理程序的验证插件 但它仍然会刷新 我以前用过这个方法 没有出现任何问题 看看这里的页面 让我知道您的想法 div cl
  • php 表单提交 - Q2

    我对这个虚拟问题感到抱歉 这是我的简单 PHP 表单 其中包含两个 SQL 表和 ADD 提交 按钮 我希望将人员从 Test1 转移到 Test2 很多事情都很好 只有提交按钮不起作用 因此 Test2 表没有反馈 Revised 现在提

随机推荐

  • AWS S3 控制台:发生意外错误

    我已经在 aws 上注册了一个帐户 创建了一个存储桶并上传了一些文件 我已将存储桶设置为静态网页 并且可以使用 url 访问文件 但是现在 当我进入 AWS 控制台并进入 S3 服务时 我看不到我的存储桶 我看到的只是消息显示 发生意外错误
  • RestKit 编译失败,cocoapods use_frameworks for swift

    我使用 RestKit 以及一些仅 Swift 的框架 当我使用 cocoapods use frameworks 时 标志 我收到编译错误 它在桥接头中找不到 CoreData h 也找不到 RKValueTransformers h 如
  • 如何使用Powershell读取txt文件中2个特殊字符之间的行

    嗨 我几乎是 Powershell 的新手 我需要读取文本文件中的一些特定行并将它们放入不同的数组中 我有一个如下所示的文件 Servers Server1 Server2 Server3 Server4 IP 10 10 10 10 10
  • 将整型常量转换为指针类型

    将任意整数常量转换为指向对象 函数类型的指针 例如在单元测试中使用 是否是 UB struct helper opqaue creation the structure is complicated struct my struct str
  • GraphQL 字段作为函数

    我在学习GraphQL在编写时 我对特定问题的不同实现感到有点困惑fields of a GraphQLObjectType 这两种实现有什么区别 1 var schema new GraphQLSchema query new Graph
  • react-router 返回上一页 如何配置历史记录?

    谁能告诉我如何返回上一页而不是特定的路线 使用此代码时 var BackButton React createClass mixins Router Navigation render function return
  • couchdb 多个数据库

    我习惯于使用 mysql 但对于我的下一个系列项目 CouchDB NoSQL 似乎是最佳选择 基本上是为了避免 mysql 中的 EAV 并接受它提供的所有很酷的功能 经过大量调查和阅读文档等后 有一件事我似乎不太明白 假设我在服务器上托
  • 按钮超出布局时被挤压

    在我的代码中 我动态创建按钮 当我创建多个按钮时出现以下问题 当按钮被按下时我该如何获取它 My code private void showGlossary String ContentTab LinearLayout layout Li
  • Tom Kyte 的 STRAGG 函数是否有支持 SQL Server 的实现?

    STRAGG 函数实现将结果作为单列值返回 Oracle 的实现看起来非常通用 可以用于不同的表 和关系 SQL Server 能否实现类似的行为 在网络上进行搜索 似乎只返回硬编码的实现 而不是通用的实现 我们有任何已知的 Sql 服务器
  • Angular // 从 Angular 11 降级到 Angular 8

    我需要进入一个 Angular 8 1 2 的项目 但使用命令ng serve我收到此错误 此版本的 CLI 仅与 Angular 版本兼容 11 0 0 下一个 gt 11 0 0 所以我的解决方案 不起作用 是 npm uninstal
  • Jinja2 宏导入“带有上下文”和全局变量: {% from file.html import macro_name with context %}

    在Python的Jinja2模板引擎中 我的宏 with context 无法从上下文访问全局变量 进口声明 import en US my macro html as all macros from en US my macro html
  • 无法使用 jQuery 将 HTML 代码附加到一个 div 中

    我有一个 div id userinfo div div 现在我想根据 localStorage 向这个 div 添加一些内容 if localStorage 0 userinfo append p Test p else userinfo
  • docker 卷位于哪里?

    在 macOS 上使用 docker 机器时需要知道 docker 卷所在的位置 安装使用 boot2docker 因此虚拟机在后面运行 Example docker volume create test data docker检查显示了一
  • TextBox 自动换行将字符串拆分为行

    这是我第一次就这个令人惊叹的服务提出问题 因为今天它通过阅读它对我帮助很大 目前 我正在制作小型 C 应用程序 需要使用大量文本框 在文本框属性中我已经检查过多线 and 自动换行功能 因此 当用户输入文本时 它会正确显示在多行中 我的问题
  • 使用 DTO 可空引用类型的最佳实践 [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 我有一个 DTO 它是通过从 DynamoDB 表读取数据来填充的 假设目前看起来像这样 public class Item public st
  • Torch / Lua,如何将训练好的神经网络模型保存到文件?

    我从事一个 Torch Lua 项目 在其中实现了一个人工神经网络模型 一切正常 但现在我想按以下方式修改我的代码 由于我的输入数据集非常大 我想将其划分为 N 20 个跨度 然后我只想在第一个数据集跨度上训练我的神经网络 然后并行测试其他
  • SSErrorDomain、SKReceiptRefreshRequest、SKRequest 确实失败并出现错误,代码 = 16,代码 = 110

    iOS 9 2 1 Xcode 7 2 1 启用 ARC 我正在使用以下方法来检查失败SKProductsRequest and SKReceiptRefreshRequest void request SKRequest request
  • 当父容器发生变换时如何强制固定位置?

    我需要将位置固定到应用了转换的父项内的子 div 的视口 不幸的是我无法删除父级的转换 有什么想法如何覆盖这种行为吗 我可以在子元素上使用变换使其看起来类似于固定位置吗 rotate transform rotate 30deg backg
  • openpyxl中如何进行列对齐?

    我试图在 openpyxl 中对齐列 但没有成功 wb Workbook ws wb active ws column dimensions A alignment Alignment horizontal left ws column d
  • 如何创建自定义 ExtJS 表单字段组件?

    我想创建自定义 ExtJS表单域组件中使用其他 ExtJS 组件 例如 TreePanel 我怎样才能最轻松地做到这一点 我读过的文档扩展表单字段基础 http docs sencha com ext js 4 0 api Ext form