Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/367.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 画布上的FabricJS AngularJS事件_Javascript_Angularjs_Events_Canvas_Fabricjs - Fatal编程技术网

Javascript 画布上的FabricJS AngularJS事件

Javascript 画布上的FabricJS AngularJS事件,javascript,angularjs,events,canvas,fabricjs,Javascript,Angularjs,Events,Canvas,Fabricjs,我正在开发一个MEAN Stack应用程序,我在上面使用FabricJS。 为了更轻松地工作,我发现我的大部分东西现在都在工作 现在我想做点什么,如果用户点击画布。 只有使用FabricJS,我才做了如下工作: $scope.canvas.on('mouse:down', function() { alert("mouse down"); }); $scope.fabric.on('mouse:down', function() { alert("mouse down"); }

我正在开发一个MEAN Stack应用程序,我在上面使用FabricJS。 为了更轻松地工作,我发现我的大部分东西现在都在工作

现在我想做点什么,如果用户点击画布。 只有使用FabricJS,我才做了如下工作:

$scope.canvas.on('mouse:down', function() {
    alert("mouse down");
});
$scope.fabric.on('mouse:down', function() {
    alert("mouse down");
});

or

$scope.fabric.canvas.on('mouse:down', function() {
    alert("mouse down");
});
但是现在有了角织物,我无法直接进入画布。那是我的控制器:

app.controller('FabricCtrl', ['$scope', 'Fabric', 'FabricConstants', 'Keypress', function($scope, Fabric, FabricConstants, Keypress) {
$scope.fabric = {};
$scope.FabricConstants = FabricConstants;

$scope.$on('canvas:created', function() {
    $scope.fabric = new Fabric({
        JSONExportProperties: FabricConstants.JSONExportProperties,
        textDefaults: FabricConstants.textDefaults,
        shapeDefaults: FabricConstants.shapeDefaults,
        json: {}
    });

  $scope.fabric.setCanvasSize(32, 32);
  $scope.fabric.canvasScale = 10;
  $scope.fabric.setZoom();

  Keypress.onSave(function() {
        $scope.updatePage();
    });
});
但我不能这样做:

$scope.canvas.on('mouse:down', function() {
    alert("mouse down");
});
$scope.fabric.on('mouse:down', function() {
    alert("mouse down");
});

or

$scope.fabric.canvas.on('mouse:down', function() {
    alert("mouse down");
});
如果我编辑fabric.js并直接在画布上编辑事件,它就会工作。
但我无法想象这是正确的方法,也许有人有想法?

找到了一个解决方案,很简单。我在fabric HTML元素上方的div上绑定了
ng mousedown

<div class="fabric-container" ng-mousedown="test($event)">
  <canvas fabric="fabric"></canvas>
</div>