Fabric.js: Get objects by name

Can I get Fabric.js objects by name? I can add a subclass that allows me to add my own name property to the objects. But after that I can name objects by name instead of index? eg

call on index canvas.getItem(0);

I need something like canvas.getItemByName(itemName);

+6
source share
1 answer

You can do this at the application level with the following code:

 /** * Item name is non-unique */ fabric.Canvas.prototype.getItemsByName = function(name) { var objectList = [], objects = this.getObjects(); for (var i = 0, len = this.size(); i < len; i++) { if (objects[i].name && objects[i].name === name) { objectList.push(objects[i]); } } return objectList; }; 

If the name of the object is unique, you can do something like this:

 /** * Item name is unique */ fabric.Canvas.prototype.getItemByName = function(name) { var object = null, objects = this.getObjects(); for (var i = 0, len = this.size(); i < len; i++) { if (objects[i].name && objects[i].name === name) { object = objects[i]; break; } } return object; }; 

Now you can call canvas.getItemByName('name1'); or canvas.getItemsByName('name1'); .

+14
source

All Articles