我正在使用 ExtJS 4,并且需要在 XTemplate 标记中使用方括号集。这种需求源于我需要在渲染输出中保留方括号。更具体地说,我正在处理名称中包含破折号(减号)的对象属性,这需要使用方括号在 JavaScript 中访问这些属性的值,例如:
raw.cmsInstances[\'cms-thumb\'].url
任何在 JavaScript 中使用过 CSS 的人都曾遇到过 CSS 属性名称中出现破折号的问题。
我一直无法找到实现相同结果的替代语法(方括号表示法)。
我已经使用 ExtJS 自定义对象类型解决了这个限制。特别是,我正在访问 ExtDirect 的原始输入,并使用以下技术将其中的值推送到模板标记中:
Ext.define('my.ux.file.IconBrowser', {
tpl: [
'<tpl for=".">',
//Am trying to use this notation, due to dash in property name:
//'<img src="{raw.cmsInstances[\'cms-thumb\'].url}"/>'
//But this causes XTemplate to evaluate whatever is between the square
//brackets.
(!Ext.isIE6? '<img src="{raw.cmsInstances.cmsThumb.url}"/>' :
'<div style="filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(src=\'{raw.cmsInstances.cmsThumb.url}\')"></div>'),
'</tpl>'
],
initComponent: function() {
Ext.data.Types.RAW = {
convert: function(v, data) {
return data.raw;
},
type: 'Raw'
};
var types = Ext.data.Types;
this.store = Ext.create('Ext.data.Store', {
proxy: {
type: 'direct',
directFn: this.loadLibraryApi,
paramOrder: ['instanceType'],
reader: {
root: 'data'
}
},
fields: [
{name: 'raw', type: types.RAW}
]
});
this.callParent(arguments);
}
});
我更愿意避开方括号或找到替代它们的替代方案,以达到相同的结果。
提前致谢!