我正在使用Sencha Touch应用程序,并且对此代码有下一个疑问/问题。
Ext.each(records, function(record){
newItem = Ext.create('Ext.Panel', {
material: record.get('material'),
cls: 'setitems-item',
tpl: '<div class="setitems-item-material">{material}</div>' +
'<div class="setitems-item-atpstatus {atpstatus}">{cquantity}</div>' +
'<div class="setitems-item-cdd">{[Cicero.Helper.formatSAPdate2Str(values.cdd)]}</div>' +
'<div class="setitems-item-netprice">{netprice}</div>' +
'<div class="setitems-item-netvalue">{netvalue}</div>',
items: [
{
xtype: 'button',
text: Cicero.Text.getText('SC_I_CONDITIONS_BTN'),
itemId: 'setItemConditions',
cls:'setConditions'
}
],
data: record.getData()
});
newSetItems.push(newItem);
}, this);
并且此代码管理从控制器为每个模式窗口创建的按钮。
manageSetItemConditions: function (button) {
var matId = button.up('panel'),
//var matId = button.up('panel').material,
recordId = button.up('cartItem').getRecordId(),
record = Ext.getStore('CartItems').getById(recordId),
conditionsStore = record.setitems().findRecord('material', matId).conditions(),
orderTypeConditionsStore = this.getCartHeader().down('#headerOrderType').getRecord().sconditions(),
view = Ext.create('xx.view.cart.Conditions', {
orderTypeConditionsStore: orderTypeConditionsStore
});
//view.setRecordId(record.getId());//TODO: mirar si es necesario
view.down('dataview').setStore(conditionsStore);
view.showBy(button);
},
在这里,您可以看到属性“ material”,但这不是Sencha类中包含的属性,如何在Panel类中添加此新的config属性(在这种情况下)?
我是否需要覆盖面板类?
该代码在localhost中运行,但在Sencha CMD的生产构建(命令行)之后无法运行,因为该类中不包含材料属性。
谢谢!!
在查看Sencha Touch代码时,我认为您将必须添加material
到面板的eventedConfig
属性中,因为设置器的设置如下touch/src/Evented.js
:
for (name in eventedConfig) {
if (eventedConfig.hasOwnProperty(name)) {
nameMap = ExtClass.getConfigNameMap(name);
data[nameMap.set] = this.generateSetter(nameMap);
}
}
您不能影响eventedConfig
Ext.create中的属性,必须为此定义一个覆盖,这会影响所有面板:
Ext.define('MyApp.override.Panel',{
override: 'Ext.panel.Panel',
constructor:function() {
this.callParent(arguments);
this.eventedConfig.material = "SomeDefaultValue";
}
});
或定义派生类并使用该类:
Ext.define('MyApp.ux.Panel',{
extend: 'Ext.panel.Panel',
xtype: 'mypanel',
constructor:function() {
this.callParent(arguments);
this.eventedConfig.material = "SomeDefaultValue";
}
});
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句