2016-06-06 2 views
2

Я хочу программно запустить событие «объект: изменено». Я уже пробовал использовать методы «огонь» и «триггер».Как вызвать программный объект fabric.js «object: modified»?

var canvas = new fabric.Canvas('c'); 

canvas.on("object:modified", function (e) { 
    alert("object modified"); 
}); 

var text = new fabric.Text('Text', { 
    fontFamily: 'Hoefler Text', 
    left: 10, 
    top: 10 
}); 

canvas.add(text); 

$('.fillText').click(function(){ 
    text.setFill($(this).data('color')); 
    canvas.renderAll(); 

    text.trigger('modified'); 
}); 

$('#moveText').click(function(){ 
    text.setLeft(50); 
    text.setTop(50); 
    text.setCoords(); 
    canvas.renderAll(); 

    text.trigger('modified'); 
}); 

https://jsfiddle.net/gb4u85q4/

ответ

7

Вы можете вызвать события с помощью canvas.trigger('<eventname>', options);. fire устарел, поэтому вам, вероятно, следует избегать использования этого.

Поскольку вы хотите, чтобы вызвать object:modified, вы можете сделать это следующим образом, при прохождении которой объект был изменен:

canvas.trigger('object:modified', {target: text}); 

Я обновляю JSFiddle с раствором добавляет к нему. :) (обратите внимание, что я изменил alert к console.log, потому что я нахожу оповещения раздражает, вы можете просмотреть вывод console.log в инструментах для разработчиков, которые можно открыть, например, в Google Chrome с помощью кнопки F12)

+0

Благодарности именно то, что мне нужно. Как я пропустил параметр options? Позор мне :) – Ogreucha

+0

Вы также можете использовать триггерный метод без прохождения объекта. Например, мой проект вызывает функцию на любом объекте, модифицированном событием, поэтому я использую метод триггера следующим образом: canvas.trigger ('object: modified') –

Смежные вопросы