[英]Should I only do DOM manipulation in the link fn of a directive?
我一般都遵循优秀的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 ...
}
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.