如何以编程方式触发fabric.js“object:modified”事件?

时间:2016-06-06 10:24:02

标签: javascript fabricjs

我想以编程方式触发'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/

2 个答案:

答案 0 :(得分:9)

您可以使用canvas.trigger('<eventname>', options);触发事件。不推荐使用fire,因此您应该避免使用它。

由于您想触发object:modified,您可以通过以下方式执行此操作,同时传递修改了哪个对象:

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

我使用添加的解决方案更新了您的JSFiddle。 :) (请注意,我将alert更改为console.log,因为我发现警报很烦人,您可以在开发者工具中查看console.log的输出,这些工具可以在例如Google Chrome中打开按F12)

答案 1 :(得分:1)

版本4的重大更改

与此同时,您应该使用fire

canvas.fire('object:modified');

在可观察的混合observe中,stopObservingtrigger被删除。 继续使用onofffire。那些较短,而且我们所有 文档中指的是这种名称。

有关更多详细信息,请参见Version 4 breaking changes