渲染器和转换器ExtJS之间的区别

时间:2014-04-10 10:03:37

标签: extjs

我在列的每个单元格中都有一个带有列的网格面板(月份:6月到12月)我做了一个简单的处理我的问题,如果我在转换器(我的模型的字段)中进行它不起作用:

var responses=record.responses();
var sum=0;
var nbResponses=0;
console.log('counts:'+responses.getCount()); 
for(var i=0;i<responses.getCount();++i){
  var response=responses.getAt(i);
  if(response.get('month')===0){
    sum+=response.get('score');
    ++nbResponses;
 }
}
var nb=Ext.Number.toFixed(sum/nbResponses,1);
if(isNaN(nb))
return '';
else return nb;

它总是返回'',我显示了respond.getCount()它将为0,现在如果我删除转换器并在列的渲染器中进行此过程它工作并返回正确的值,我的问题是如果我在渲染器中让它无法在此列中访问(例如,列'jan')来自另一列,因为我有其他列愿望计算简单行中所有月份的总和,因此我的网格面板是:

columns: jun|feb|..... |dec |total.
row1:    3  |  5|   000|   5|  13.

所以你有任何想法和感谢。 感谢名单

1 个答案:

答案 0 :(得分:2)

渲染器是一种拦截器&#39;可用于在呈现数据(值,外观等)之前转换的方法。它告诉网格它应该如何显示该列的每个单元格的信息。例如:

{
    renderer: function(value){
       value?'<span style="color:green">TRUE</span>':'<span style="color:RED">FALSE</span>';
    }
}

转换器是将Reader提供的值转换为将存储在Model中的对象的函数。此功能可以访问&#34;行&#34;数据存储中的信息,可用于在数据模型中创建其他字段组合的新字段。例如,如果你有一个&#34;名字&#34;和&#34;姓氏&#34;字段,您可以使用转换轻松创建一个&#34;全名&#34;字段。

这些功能都无法访问数据存储的全长。

我希望它有所帮助。