Extjs store store 剪切bigint值的最后一位
Extjs store store cuts the last digits of a bigint values
我使用的是 Extjs 7.4。当我将数据加载到 extjs 存储中时,我遇到了 bigint 值的最后一位数字被截断的问题。
模型字段类型是 int 还是 number 并不重要。 Bigint 值只有在类型为字符串时才能正确显示。我不能在数据模型的 idProperty 中将该字段用作字符串。有人知道吗。
可能是javascript的限制,不是ExtJs。事实上,如果您尝试使用 bigint 属性 创建一个新对象,您会得到一些截断的数字:
var record = {
numericValue: 9223372036854776807,
stringValue: "9223372036854775807"
};
console.log(record);
它打印:
{
numericValue: 9223372036854776000,
stringValue: "9223372036854775807"
}
---编辑---
一个解决方案可能是传递商店模型中定义的 BigInt 字段的 convert 配置。请注意,您的 属性 最初应由商店作为字符串读取。这样做,属性 将正确存储 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"));
我使用的是 Extjs 7.4。当我将数据加载到 extjs 存储中时,我遇到了 bigint 值的最后一位数字被截断的问题。 模型字段类型是 int 还是 number 并不重要。 Bigint 值只有在类型为字符串时才能正确显示。我不能在数据模型的 idProperty 中将该字段用作字符串。有人知道吗。
可能是javascript的限制,不是ExtJs。事实上,如果您尝试使用 bigint 属性 创建一个新对象,您会得到一些截断的数字:
var record = {
numericValue: 9223372036854776807,
stringValue: "9223372036854775807"
};
console.log(record);
它打印:
{
numericValue: 9223372036854776000,
stringValue: "9223372036854775807"
}
---编辑---
一个解决方案可能是传递商店模型中定义的 BigInt 字段的 convert 配置。请注意,您的 属性 最初应由商店作为字符串读取。这样做,属性 将正确存储 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"));