我在 ExtJs 中使用行扩展器插件时遇到问题。我正在尝试做的是调用 formatThrottle 函数并随之传递 throttleState。
这是那些愚蠢的语法之一,你可以看到我正在做什么,但我在第二个圆括号上得到一个语法错误,其他行工作得很好并且已经在我们的代码库中 - 因此我的下一个问题,因为我最初没有开发这个:
可以使用 {}(大括号)将当前行中的参数值传递给 HTML 的机制是什么?这是一个行扩展器的东西还是一个通用的JavaScript的东西?
编辑:小提琴链接与我的问题修复:
https://fiddle.sencha.com/#fiddle/lbn
rowBodyTpl :
'<table><tr>' +
'<td class="TdIndent"/>' +
'<td class="TdItemsWidth">' + formatThrottle( + '{throttleState}' + ) + '</td>' +
'<td class="TdAmountWidth">{throttleReason}</td>' +
'<td class="TdIndent"/>' +
'<td class="TdItemsWidth">{throttleState}</td>' +
'<td class="TdAmountWidth">{throttleReason}</td>' +
'</tr></table>'
你可以做这样的事情:
rowBodyTpl: [
'<table><tr><td>{[this.formatThrottleState(values.id)]}</td></tr></table>', {
formatThrottleState : function(throttleState) {
if(throttleState === 1) {
return "formatted";
} else {
return "not formattted";
}
}
}
]
希望这对您有所帮助。
该函数必须作为模板的一部分传递,以便它保持在范围内。
您可能还会在文档中找到有用的内容:http://docs.sencha.com/extjs/4.2.1/#!/api/Ext.XTemplate
正如您现在所拥有的那样,它正在尝试立即调用格式节流,并且语法不正确。您希望它在填充实际值后运行。
大括号将仅使用行扩展器类中的逻辑进行替换。