javascript - FabricJS 多 Canvas 处理

标签 javascript angularjs html canvas fabricjs

使用 Angular 在 foreach 循环中,我使用 Fabricjs 生成 Canvas 并附加图像和文本。我需要知道的是如何跟踪正在设置的多个 Canvas 变量。

angular.forEach($scope.data, function (obj, key) {
   var newCanvas = document.createElement('canvas');
   newCanvas.id = 'variableCanvas'+key;
   var body = document.getElementById("canvasContainer");
   body.appendChild(newCanvas);


   var canvas = new fabric.Canvas('variableCanvas'+key, {
                    backgroundColor: 'rgb(215,215,215)',
                    selectionColor: 'blue',
                    width: $scope.width,
                    height: $scope.height,
                    centeredRotation: true,
                    centeredScaling: true,
                    canvasKey: key
                });


});

问题是我需要使 var canvas 类似于 var canvas+key ,以便我可以稍后访问特定的 Canvas 变量以添加文本或其他元素。对此有任何想法。当我尝试命名变量 var canvas+key 或 var canvas[key] 或 var canvas.key 时,它不起作用,我收到语法错误。

所以稍后我可以做

 canvas+key.add(inputText);

因为我可以跟踪应用程序中的 key

最佳答案

您可以在 foreach 循环之外的 $scope 上定义 Canvas 数组。然后将每个 Canvas 分配给$scope.canvas[key]。所以你的代码将是这样的:

$scope.canvas = [];
angular.forEach($scope.data, function (obj, key) {
   var newCanvas = document.createElement('canvas');
   newCanvas.id = 'variableCanvas'+key;
   var body = document.getElementById("canvasContainer");
   body.appendChild(newCanvas);


   $scope.canvas[key] = new fabric.Canvas('variableCanvas'+key, {
                    backgroundColor: 'rgb(215,215,215)',
                    selectionColor: 'blue',
                    width: $scope.width,
                    height: $scope.height,
                    centeredRotation: true,
                    centeredScaling: true,
                    canvasKey: key
                });


});

这样您就可以使用键将所有 Canvas 评估为范围变量。

关于javascript - FabricJS 多 Canvas 处理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28355816/

相关文章:

javascript - 从 DOM 获取 .append 值

AngularJS:拒绝设置不安全 header "Access-Control-Request-Headers"

javascript - 输入字段上的 Angular ng-blur 不起作用

html - CSS 选项卡在 IE 中位于左侧,但在 Mozilla 中它们居中。是否有针对 IE 的修复程序?

HTML、CSS、显示

javascript - 为什么 Flickr public feed API 在通过 jQuery 访问时在显示照片结果之前返回 "undefined"?

javascript - 在 jVectorMap 上的一些圆圈标记上放置不同的描边颜色和宽度

javascript - Angular JS : validating duplicate object key in table

Javascript:带按钮的循环声音。 bool 值错误

javascript - 如何在 javascript 的节点列表中使用 .map()?