定义新的xtype字段sencha touch MVC

问题描述:

我必须在sencha应用程序中创建一个新的xtype,但是我不知道必须在哪里放置代码。我试图创建一个新的文件,并在app.js它加入意见数组,但它不工作,因为我的新的xtype是场不是一个视图定义新的xtype字段sencha touch MVC

Ext.define('Dynamo.field.PatternText', { 
extend : 'Ext.field.Text', 
xtype : 'patterntextfield', 

config : { 
    pattern : '[0-9]*' 
}, 

updatePattern : function(pattern) { 
    var component = this.getComponent(); 

    component.updateFieldAttribute('pattern', pattern); 
}, 

initialize : function() { 
    this.callParent(); 

    var component = this.getComponent(); 

    component.input.on({ 
     scope : this, 
     keydown : 'onKeyDown' 
    }); 
}, 

onKeyDown : function(e) { 
    var code = e.browserEvent.keyCode; 

    if (!(code >= 48 && code <= 57) && !(code >= 97 && code <= 105) && code !== 46 && code !== 8 && code !== 188 && code != 190) { 
     e.stopEvent(); 
    } 
} 

});

通常,自定义组件是在Ext.ux命名空间下声明的。

可以,只要你正确配置Ext.Loader把任何你想要的文件:

Ext.Loader.setConfig({ 
    enabled : true, 
    paths: {  
     'Ext.ux' : 'js/ux' 
    } 
}); 

使用这个配置,你可以把你所有的自定义组件的自动加载js/ux文件夹。对于这个特殊的文件的路径将是js/ux/Field/PatternText.js

而且你需要使用正确的命名空间来扩展字段:

Ext.define('Ext.ux.field.PatternText', { 
    extend : 'Ext.form.field.Text',