2016-06-24 3 views
0

Um das Leinwandbild von fabricjs nach Namen zu erhalten, muss ich eine eindeutige ID oder einen eindeutigen Namen für dieses Bild festlegen. Ich habe eine neue Klasse erstellt fabric.NamedImage So habe ich es gemacht.Wie Name zu Fabricjs Objekt hinzufügen?

fabric.NamedImage = fabric.util.createClass(fabric.Image, { 

    type: 'nameimage', 

    initialize: function (element, options) { 
     this.callSuper('initialize', element, options); 
     options && this.set('name', options.name); 
    }, 

    toObject: function() { 
     return fabric.util.object.extend(this.callSuper('toObject'), { name: this.name }); 
    }, 

    _render: function (ctx) { 
     this.callSuper('_render', ctx); 
    }}); 

Und Fromobject

fabric.NamedImage.fromObject = function (object, callback) { 
     fabric.util.loadImage(object.src, function (img) { 
      var instance = new fabric.NamedImage(img, object); 
      callback && callback(instance); 
     }); 
    }; 
    fabric.NamedImage.async = true; 

Aber wenn ich versuche, Leinwand loadFromJSON aus irgendwelchen Gründen zu laden ich Fehler erhalte

cannot read property 'async' of undefined 

Hier ist der Code, wo ich versuche zu laden JSON

for (i = 0; i <= canvas.length; i++) { 
        JSON.parse(imageQuery[i]); 
       canvas[i].loadFromJSON(imageQuery[i]); 
         canvas[i].renderAll(); 
         console.log(' this is a callback. invoked when canvas is loaded!xxx ');    
      } 

habe ich schon gelesen cannot read property 'async' of undifined und save canvas to server with custom attribute

Gibt es irgendeine Art und Weise durch seinen Namen zu bekommen?

Antwort

0

Plesae ändern Sie die Eigenschaft type Ihrer Klasse zu 'namedImage' und es sollte gehen.

+0

Funktioniert immer noch nicht mit dem gleichen Fehler. Ich habe 'nameimage' in 'namedImage' geändert – InnokentyDM