将对象标识符分配给fabric.js中的某些对象,并将其另存为json

将对象标识符分配给fabric.js中的某些对象,并将其另存为json,json,fabricjs,Json,Fabricjs,我正在使用fabric.js与画布交互。我需要分配一些对象的唯一id,然后使用id访问这些对象 我从fabric.js中获得并添加了以下代码 var object = { id: this.id, } 现在,我使用以下代码动态添加一些对象的ID: for (i=0;i<10;i++) { var rect = new fabric.Rect({ left: 100, top: 100, fill: 'red',

我正在使用fabric.js与画布交互。我需要分配一些对象的唯一id,然后使用id访问这些对象

我从fabric.js中获得并添加了以下代码

  var object = {
     id:   this.id,
  } 
现在,我使用以下代码动态添加一些对象的ID:

for (i=0;i<10;i++)
{
  var rect = new fabric.Rect({
       left: 100,
       top: 100,
       fill: 'red',
        id: 'RECT'+i
       });
    alert(rect.id) //this is showing me the ids of each rectangle.
}

这样我就不会在JSON中获得ID。请告诉我一种方法,我可以通过它将一些对象的ID保存到JSON中

这是一个有效的JSFIDLE:

试试这个:
var json=json.stringify(canvas.toJSON(['id'])

要从JSON加载画布并通过对象的ID访问对象,请执行以下操作:

var rectOne, rectTwo;  
canvas.loadFromJSON(json, function () {}, 
  function (o, object) {
    switch (object.id) {
        case 'RECT1':
            rectOne = object;
            break;            
        case 'RECT2':
            rectTwo = object;
            break;
        default:
            break;
    }
});
下面是我正在创建的一个网站,它使用了以下代码:


我添加了一个工作JSFIDLE供您参考。希望有帮助@蒂姆哈克。谢谢。我现在可以用json获取ID。但是可以用JavaScript访问这些ID吗??我正在尝试,但无法做到。当然,我用第4步更新了小提琴。我假设当你说“…是否可以使用JavaScript访问这些ID”时,你指的是无需使用
canvas.loadFromJSON
。无论如何,请查看更新JSFIDLE并让我知道。
var rectOne, rectTwo;  
canvas.loadFromJSON(json, function () {}, 
  function (o, object) {
    switch (object.id) {
        case 'RECT1':
            rectOne = object;
            break;            
        case 'RECT2':
            rectTwo = object;
            break;
        default:
            break;
    }
});