【发布时间】:2016-04-25 13:50:38
【问题描述】:
我通常遵循优秀的 John Papa Angular V1 样式指南,但我不确定哪种模式最适合我的以下情况。
我有一个指令创建一个画布,并调用各种角度服务来绘制它。
一个特定的代码部分非常昂贵,所以我使用两个画布缓冲区在不同的阶段进行绘制。各种消息来源告诉我所有与“DOM”相关的东西都应该在指令中。我理解这仅意味着链接功能。现在虽然我在指令控制器中创建了两个画布。
这是最适合他们的地方吗?他们还会或应该去哪里?这还重要吗?我目前的想法是创建一个 Angular 工厂来创建一个可以以这种方式使用的“canvasBuffer”。我唯一关心的是管理该 DOM 对象的生命周期,这再次违反了仅在指令中进行 DOM 操作的原则。
function thingyDirectiveController($scope, canvasService, drawingService, boundsService) {
var vm = this;
// This may want to be moved elsewhere?
vm.imageBufferCanvas = document.createElement('canvas');
vm.imageBufferContext = vm.imageBufferCanvas.getContext('2d');
function draw() {
drawingService.drawBackground(vm.context);
// Only update if required
if (vm.videoImage.src != vm.videoFrame) {
vm.videoImage.src = vm.videoFrame;
// Draw image to buffer
vm.imageBufferContext.drawImage(vm.videoImage, 0, 0, vm.videoImage.width, vm.videoImage.height);
// etc ...
}
}
}
【问题讨论】:
标签: javascript angularjs canvas