2017-08-12 68 views
0

我试图在Ext.column中使用renderer config。我在模型中有两个字段状态; balanceoklastbalance。但它给出了这个错误:如何在ExtJS 5.1.1上获得另一个Model字段

[W] XTemplate evaluation exception: getRecord is not defined 

我如何显示另一个字段与get方法?

型号

Ext.define('MultiDB.model.FolioModel', { 
    extend: 'Ext.data.Model', 
    fields: [ 
     {name: 'clientname', type: 'string'}, 
     {name: 'balanceok', type: 'bool'}, 
     {name: 'lastbalance', type: 'int'} 
    ] 

网格面板

{ 
    dataIndex: 'balanceok', 
    flex: 1, 
    text: 'Balance', 
    renderer: function (value, record, store) { 
    if (value == 1) { 
     return "All Paid"; 
    } else { 
     return getRecord('lastbalance'); 
    } 
    } 
} 

回答

1

不知道你在哪里找到getRecord,正确的调用是:

record.get('lastbalance'); 

作为注意,value == 1的检查有点奇怪,因为该模型会将字段转换为布尔值。

+0

你好再次@ evan-trimboli。你的回复很容易,我只是把'getRecord'改成'record.get'。你的第一个问题的答案是** Stackoverflow **。在提出问题之前,我深入潜水并尝试所有示例代码块。如果它仍然没有工作,那么我发布问题。请阅读下面的评论,我已发布到@ djmm187,以了解*你已经注意到的奇怪情况*。 =)非常感谢! –

+1

通过在模型定义中指定'type',这意味着来自服务器的值被转换为布尔值,所以它是'true/false'。这意味着您的支票只是:'if(balanceok)' –

+0

到目前为止,将字段类型指定为'bool'是错误的。那么对我的情况来说什么更可行?服务器响应只有'0'和'1'!如果我将它分配给'int',可以吗? - *好吧,我已经试过了,它现在可以解决任何问题!* –

3

渲染器已经提供了一个记录参数。您可以在关注网格单元格时使用getRecord,但看起来您并不需要上述用例。

它看起来像你的渲染器参数有点关闭,这可能是为什么你有问题检查和检索值。

如果您更新列呈示: renderer: function (value, record, store) { ... } 到: renderer: function (value, metaData, record, rowIndex, colIndex, store, view) { ... } 你可以看到render方法在这里的完整描述: http://docs.sencha.com/extjs/5.1.1/api/Ext.grid.column.Column.html#cfg-renderer

看看下面捣鼓一个工作的例子,将帮助你去: https://fiddle.sencha.com/#view/editor&fiddle/251r

+0

亲爱的@ djmm187感谢您的回复。我已经检查了小提琴并且实现了,但是它并没有像你创建的那样工作,所以我不得不改变一些东西。原因是'balanceok'字段从服务器响应为0或1。因此,我创建的演示的行为如下:*如果它是1,那么“全部付费”,否则给我'lastbalance' *。所以我问自己!为'balanceok'分配'bool'是否是一个错误? –

+1

嗡嗡声.. JavaScript应该隐式地eval 0,1 False,表达式中的True,以及extjs将模型属性转换为指定的类型(至少在本例中)。你也可以用'checkboxfield'返回类型0,1来看到这个。但将模型更新为尽可能明确并不是一个坏主意。显式总是比隐式更好。 :) – djmm187

相关问题