Extjs store store会剪切bigint值的最后一位数

k4aesqcs  于 2022-09-26  发布在  其他
关注(0)|答案(1)|浏览(188)

我使用了sd Extjs 7.4。当我将数据加载到Extjs存储中时,我遇到了一个问题,即最后的数字会因bigint值而被截断。模型字段类型是int还是number并不重要。Bigint值​​只有在类型为字符串时才能正确显示。我不能在数据模型的idProperty中将该字段用作字符串。有人知道吗。

uajslkp6

uajslkp61#

也许这是对javascript的限制,而不是ExtJ。事实上,如果尝试使用bigint属性创建新对象,则会得到一些截断的数字:

var record = {
    numericValue: 9223372036854776807,
    stringValue: "9223372036854775807"
};
console.log(record);

它打印:

{
    numericValue: 9223372036854776000,
    stringValue: "9223372036854775807"
}

---编辑---
解决方案可能是传递商店模型中定义的BigInt字段的convert-config。请注意,您的属性最初应该由存储作为字符串读取。这样做,属性将正确存储BigInt值:

Ext.define("MyStore",{
    extend: "Ext.data.Store",

    fields: [
        {
            name: "bigIntProp",
            convert: function (value) {
                return BigInt(value);
            }
        }
    ]
});

var store = new MyStore();

store.add({ bigIntProp: '9223372036854775807' });

// This correctly print the big int value now
console.log(store.getAt(0).get("bigIntProp"));

相关问题