如何在单独的文件中使用自定义Vtype,以便在EXT.JS中全局使用它们
How to use custom Vtypes in separate file to use them globally in EXT.JS
我正在使用EXTJS作为项目的前端框架。我已经编写了一个自定义字段验证函数,该函数可以通过"vtype"属性访问。当函数位于用于字段验证的本地文件中时,它们可以正常工作。
例如,在我想检查文本字段值是否为英文的vtype中,下面的代码工作正常
在创建表单的同一文件中使用验证
//create a custom vtype for english text fields
var engTest = /^[a-zA-Z0-9's]+$/;
Ext.apply(Ext.form.field.VTypes, {
// vtype validation function
eng: function(val, field) {
return engTest.test(val);
},
// vtype Text property: The error text to display when the validation function returns false
engText: 'Write it in English Please',
// vtype Mask property: The keystroke filter mask
engMask: /[a-zA-Z0-9_'u0600-'u06FF's]/i
});
.
.
layout: 'form',
border: false,
items: [{
xtype: 'textfield',
fieldLabel: 'Title (en)',
name: 'title',
vtype: 'eng',
msgTarget: 'under',
.
.
.
问题是当我想在整个项目表单中全局使用这些函数时,我不能再将它们用于表单字段验证了我有一个文件名Utility,我在其中将全局函数定义为静态变量。
Utilities.js文件中的全局静态函数
var statics = {
/*
these are js functions can be used all over the project
*/
func1: function(input) {
},
func2: function(input) {
},
.
.
.
valEng: function(val) {
var engTest = /^[a-zA-Z0-9's]+$/;
Ext.apply(Ext.form.field.VTypes, {
// vtype validation function
eng: function(val, field) {
return engTest.test(val);
},
// vtype Text property: The error text to display when the validation function returns false
engText: 'Write it in English Please',
// vtype Mask property: The keystroke filter mask
engMask: /[a-zA-Z0-9_'u0600-'u06FF's]/i
});
}
};
Ext.define('smp.utility.Utilities', {
alternateClassName: 'smp.Utilities',
statics: statics
});
在表单中调用自定义定义的vtype
layout: 'form',
border: false,
items: [{
xtype: 'textfield',
fieldLabel: 'Title (en): ',
name: 'title_en',
vtype: smp.Utilities.valEng(this.getValue()),
msgTarget: 'under',
.
.
.
},
.
.
.
.
我多次修改代码,但无法通过调用smp.Utilities.valEng(this.getValue())
您可以在一个单独的文件中定义您的自定义Vtype,该文件可以全局使用类似的东西。
Ext.define('MyApp.overrides.form.field.VTypes', {
override: 'Ext.form.field.VTypes',
eng: function(val, field) {
return engTest.test(val);
},
engText: 'Write it in English Please',
engMask: /[a-zA-Z0-9_'u0600-'u06FF's]/i,
phoneText: 'This is not a valid phone number',
phoneMask: /['d'-'+()'s'.'/'']/,
phoneRe: /^['d'-'+()'s'.'/'']{5,20}$/,
phone: function(v) {
return this.phoneRe.test(v);
}
});
确保您的应用程序需要它。
Ext.define('MyApp.Application', {
extend: 'Ext.app.Application',
requires: [
'MyApp.overrides.form.field.VTypes'
],
...
launch: function() {
...
}
});
您可以在任何您喜欢的地方自由使用vtype eng
。
{
xtype: 'textfield',
fieldLabel: 'Title (en): ',
name: 'title_en',
vtype: 'eng',
msgTarget: 'under'
}
您应该使用验证类型名称来使用自定义Vtypes(http://docs.sencha.com/extjs/5.1/5.1.0-apidocs/#/api/Ext.form.field.Text cfg vtype)
在你的情况下,它应该是
layout: 'form',
border: false,
items: [{
xtype: 'textfield',
fieldLabel: 'Title (en): ',
name: 'title_en',
vtype: 'eng',
msgTarget: 'under',
.
.
.
},
相关文章:
- Ext.js从json构建模型关系的问题
- 在EXT窗体面板中填充EXT JS存储
- 从Sencha Touch迁移到EXT JS 6-Contoller的默认/空路由
- 如何使用.log数据文件显示EXT-js网格
- Sencha Ext JS排序标准以字符串而不是JSON的形式发送
- ext-js网格面板滚动条不适用于jquery
- ext.js根据行和单元格索引隐藏某些单元格
- 在 Ext JS 4 MVC 应用中,什么应该负责加载商店
- 'Ext Js'表单字段验证使用'验证器'
- 调用后端、多路径变量、Ext Js
- 翻译是从哪里来的?Java servlet、tomcat和Ext Js Sencha应用程序
- 如何使用 Ext.js 向内存中的标记添加属性
- 分页 在 Ext JS 网格中
- 从 ExtJS 4 迁移到 Ext JS 5
- Ext JS工具栏和痕迹导航示例在JSFiddle中不起作用
- ext js 将面板的颜色更改为渐变
- Ext JS - 将面板绑定到数据存储的最佳方法
- ext.js中还有其他事件我应该使用吗
- Ext.js将列添加到属性网格中
- 如何在单独的文件中使用自定义Vtype,以便在EXT.JS中全局使用它们