将 Angular 2 签名板 JSON 转换为 jQuery.signaturePad JSON

Posted

技术标签:

【中文标题】将 Angular 2 签名板 JSON 转换为 jQuery.signaturePad JSON【英文标题】:Convert Angular 2 signature-pad JSON to jQuery.signaturePad jSON 【发布时间】:2020-01-12 06:16:37 【问题描述】:

我正在使用 Rails + Angular。在我的 Rails 代码中,我使用 jQuery.signaturePad,它生成如下输出:

[
  "lx"=>0.0, "ly"=>8.0, "mx"=>0.0, "my"=>7.0,
  "lx"=>1.0, "ly"=>10.0, "mx"=>0.0, "my"=>8.0,
  ...
]

但是,由于我有一个项目边界,我不能将 jQuery 用于 Angular 代码,所以我决定使用 Angular2 SignaturePad。

所以,当我尝试以下操作时:

@ViewChild(SignaturePad) signaturePad: SignaturePad;
.
.
.
drawComplete() 
  this.signaturePad.toData()

输出为:

[
  [
    x: 85.5, y: 66, time: 1568119306312, color: "#145394",
    x: 90.5, y: 66, time: 1568119306375, color: "#145394",
    x: 97.5, y: 75, time: 1568119306407, color: "#145394",
    x: 105.5, y: 89, time: 1568119306424, color: "#145394"
  ],
  [
    x: 120.5, y: 112, time: 1568119306440, color: "#145394",
    x: 134.5, y: 130, time: 1568119306456, color: "#145394",
    x: 146.5, y: 151, time: 1568119306473, color: "#145394",
    x: 159.5, y: 171, time: 1568119306489, color: "#145394"
  ]
]

数组中的每个数组代表画布中的每个笔划。

有没有办法可以将上述 Angular signatirePad JSON 格式转换为 jQuery signaturePad JSON 格式?

这样我也可以使用相同的签名数据在 Rails 中呈现登录

【问题讨论】:

【参考方案1】:

我得到了转换。所以,在下面的例子中(Angular2 signature-pad的输出):

[
  [
    1 -> x: 85.5, y: 66, time: 1568119306312, color: "#145394",
    2 -> x: 90.5, y: 66, time: 1568119306375, color: "#145394",
    3 -> x: 97.5, y: 75, time: 1568119306407, color: "#145394",
    4 -> x: 105.5, y: 89, time: 1568119306424, color: "#145394"
  ],
  [
    5 -> x: 120.5, y: 112, time: 1568119306440, color: "#145394",
    6 -> x: 134.5, y: 130, time: 1568119306456, color: "#145394",
    7 -> x: 146.5, y: 151, time: 1568119306473, color: "#145394",
    8 -> x: 159.5, y: 171, time: 1568119306489, color: "#145394"
  ]
]

编号为1,2,3,4...便于理解...

jQuery 签名板 输出如下:

l = 2, m = 1
l = 3, m = 2
.
.
.
l = 8, m = 7

因此,类似于 jQuery.signature-pad 的输出将是:

[
  lx: 90.5, ly: 66, mx: 85.5, my: 66,
  lx: 97.5, ly: 75, mx: 90.5, my: 66,
  lx: 105.5, ly: 89, mx: 97.5, my: 75,

  lx: 134.5, ly: 130, mx: 120.5, my: 112,
  lx: 146.5, ly: 151, mx: 134.5, my: 130,
  lx: 159.5, ly: 171, mx: 146.5, my: 151,
]

【讨论】:

以上是关于将 Angular 2 签名板 JSON 转换为 jQuery.signaturePad JSON的主要内容,如果未能解决你的问题,请参考以下文章

Angular2 将 json 结果转换为接口

Angular将json转换为对象数组

Angular2:将 XML 转换为 JSON

Angular 5 / Typescript - 如何将复杂的 json 对象转换为类

Angular:Typescript 将 JSON 响应转换为对象模型不起作用

Angular 2 - 将 JSON 解析为具有计算属性的类