Extjs 4.2:如何在特定的网格列上应用base64编码和解码
Extjs 4.2: How to apply base64 encoding and decoding on a particular grid column
我需要在其中一个网格列上应用 base64 编码,然后再将其提交到后端,然后我还必须对其进行解码。
我试过这样的事情:
在我的商店中,同步之前:
beforesync: function(options, eOpts ){
// Encode string
options.create[0].data.ColumnText = btoa(options.create[0].data.ColumnText);
}
在我的模型的更改方法中,我这样做了:
{
name: 'ColumnText',
type: 'string',
convert: function (value, records) {
// Decoding Encoded Information
return atob(value);
}
}
当我尝试使用行编辑器插件添加新记录时出现问题,一旦我创建新记录并尝试POST(提交按钮)它,新记录数据由模型验证并且当它到达这条线时:
return atob(value);
它抛出一个值未正确编码的错误,这是正确的,因为它是一个新创建的对象,我在我的商店的同步方法之前对数据进行编码。
谁能告诉我如何解决这个问题?
我曾经使用过的解决方案之一是利用您在 convert[=17= 中收到的 record 对象] 模型的方法。
你可以寻找typeof "record.raw"。对于 stored/fetched 记录,它将是一个包含整个 xml 数据字符串的字符串。对于您通过行编辑器创建的新创建的记录,typeof "record.raw" 将是一个对象(您的数据模型对象)。
像这样:
{
name: 'COM_BLOG_Text',
type: 'string',
convert: function (value, records) {
if(typeof records.raw.ColumnText == "undefined")
// This means that it is an encoded stored record
return atob(value);
else
// this means that it is a temporary/newly created object
return value;
}
}
我需要在其中一个网格列上应用 base64 编码,然后再将其提交到后端,然后我还必须对其进行解码。
我试过这样的事情:
在我的商店中,同步之前:
beforesync: function(options, eOpts ){
// Encode string
options.create[0].data.ColumnText = btoa(options.create[0].data.ColumnText);
}
在我的模型的更改方法中,我这样做了:
{
name: 'ColumnText',
type: 'string',
convert: function (value, records) {
// Decoding Encoded Information
return atob(value);
}
}
当我尝试使用行编辑器插件添加新记录时出现问题,一旦我创建新记录并尝试POST(提交按钮)它,新记录数据由模型验证并且当它到达这条线时:
return atob(value);
它抛出一个值未正确编码的错误,这是正确的,因为它是一个新创建的对象,我在我的商店的同步方法之前对数据进行编码。
谁能告诉我如何解决这个问题?
我曾经使用过的解决方案之一是利用您在 convert[=17= 中收到的 record 对象] 模型的方法。
你可以寻找typeof "record.raw"。对于 stored/fetched 记录,它将是一个包含整个 xml 数据字符串的字符串。对于您通过行编辑器创建的新创建的记录,typeof "record.raw" 将是一个对象(您的数据模型对象)。 像这样:
{
name: 'COM_BLOG_Text',
type: 'string',
convert: function (value, records) {
if(typeof records.raw.ColumnText == "undefined")
// This means that it is an encoded stored record
return atob(value);
else
// this means that it is a temporary/newly created object
return value;
}
}