如何使用ExtJs Row Expander Body中的参数调用函数?

时间:2015-04-16 10:48:57

标签: javascript extjs

我在使用ExtJs中的Row Expander插件时遇到问题。我要做的是调用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>'

1 个答案:

答案 0 :(得分:1)

您可以这样做:

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

现在你正在尝试立即调用formatThrottle,语法不正确。您希望它在填充实际值后运行。

大括号将仅使用行扩展器类中的逻辑替换。