ng-grid cellTemplate不适用于包含的CUSTOM_FILTERS

时间:2013-09-05 22:06:07

标签: javascript angularjs ng-grid

在列定义中包含cellTemplate时,如果该cellTemplate包含CUSTOM_FILTERS,则会导致angular to puke:

错误:语法错误:令牌'CUSTOM_FILTERS'是表达式[row.entity.1 CUSTOM_FILTERS]第14列的一个意外标记,从[CUSTOM_FILTERS]开始

即使在列def中使用默认的cellTemplate也会导致相同的错误。

cellTemplate = "<div class=\"ngCellText\" ng-class=\"col.colIndex()\"><span ng-cell-text>{{COL_FIELD CUSTOM_FILTERS}}</span></div>"

1 个答案:

答案 0 :(得分:8)

事实证明,ng-grid代码假定您已将自定义过滤器硬编码到指定的cellTemplate中:

self.cellTemplate = colDef.cellTemplate || $templateCache.get('cellTemplate.html').replace(CUSTOM_FILTERS, self.cellFilter ? "|" + self.cellFilter : "");

如您所见,如果您在列def中指定了cellTemplate,则它们不会执行替换。因此,如果您要为列提供自定义cellTemplate并且想要一个cellFilter,那么您将执行以下操作:

cellTemplate = "<div class=\"ngCellText\" ng-class=\"col.colIndex()\"><span ng-cell-text>{{COL_FIELD |number:3}}</span></div>"