2013-11-17 1 views
2

Я сделал холст Fabricjs, где пользователь может перемещать изображения и т. Д. ... Я использую JSON.stringify(canvas), чтобы получить все данные в тексте. Проблема в том, что я получаю ВСЕ данные, когда мне просто нужны некоторые из них, такие как scaleX, ScaleY, Angle ect. Как я могу это сделать?Вывести определенные переменные в холсте JSON в Fabric.js

Html

<div id="CanvasContainer"> 
    <canvas id="Canvas" width="270" height="519"></canvas> 
</div> 

Javascript

function exportData(){ 
    JSON.stringify(canvas); 
    console.log(JSON.stringify(canvas)); 
} 

ответ

0

Вы можете передать функцию заменитель в качестве второго аргумента функции JSON.stringify.

var wantedKeys = ['scaleX', 'scaleY', 'angle']; 

JSON.stringify({ scaleX: 0, scaleY: 1, angle: 3, notThisOne: 4}, function (key, value) { 
    if (!key || wantedKeys.indexOf(key) !== -1) return value; 
}); //{"scaleX":0,"scaleY":1,"angle":3} 

заменитель также может быть просто массив ключей, чтобы держать:

JSON.stringify({ scaleX: 0, scaleY: 1, angle: 3, notThisOne: 4}, wantedKeys); 
2

JSON без дополнительных свойств

var json = canvas.toJSON(); 

JSON с дополнительными свойствами включен

var json = canvas.toJSON(['lockMovementX', 'lockMovementY', 'lockRotation', 'lockScalingX', 'lockScalingY', 'lockUniScaling']); 

JSON без значений по умолчанию

canvas.includeDefaultValues = false; 
var json = canvas.toJSON(); 
+0

Это спасло день, но мне интересно, что считается «дополнительными свойствами»? – Justin