2015-03-24 2 views
0

У меня есть класс кода extjs User и я хотел бы извлечь общую функцию convertFuntion снаружи. Как я мог это достичь?Как избежать свойств функции дублирования в extjs

Ext.define('App.model.user.User', { 
    extend: 'App.model.BaseModel', 
    requires: [ 
       'Ext.data.writer.Json' 
       ], 
    fields: [ 

     { name: "roleIds", 
      mapping: "rids", 
      convert: convertFunction() { 
      //same function body 
      } 
     }, 

     { 
      name: "fieldIds", 
      mapping: "fldids", 
      convert: convertFunction() { 
      //same function body 
      } 
     } 
    ] 
}); 

Это хорошая идея создать статический метод в каком-то другом классе и передать его здесь?

Ext.define('App.model.user.User', { 
     extend: 'App.model.BaseModel', 
     requires: [ 
        'Ext.data.writer.Json' 
        ], 
     fields: [ 

      { name: "roleIds", 
       mapping: "rids", 
       convert: SomeOther.Class.convertFunction 
      }, 

      { 
       name: "fieldIds", 
       mapping: "fldids", 
       convert: SomeOther.Class.convertFunction 
      } 
     ] 
    }); 
+1

Объявите пользовательский тип поля и используйте его. –

+0

Я вижу, что мы можем создать пользовательский тип поля в extjs 5.0, возможно ли это в extjs 4.2? – ssinganamalla

ответ

-1

Определите convertFunction непосредственно в модели ...

convertFn: function(v, record) { 
    console.log(v); 
}, 

..и войти через это создает для каждого поля

constructor: function(config) { 
    this.callParent(); 
    var me = this; 
    Ext.Array.each(me.fields, function(field, index, selfFields) { 
     field.convert = me.convertFn; 
    }); 
} 

Смотрите полный пример в fiddle

Смежные вопросы