【发布时间】:2016-03-23 01:10:54
【问题描述】:
我有一些 HTML5 代码,使用画布绘制图形。我正在尝试创建一个 Angular SPA,它将基于具有 N 个对象的模型绘制 N 个这些图。这是我所做工作的简化版本。
- 创建了一个包含 N 个对象数组的控制器。 (名称和值)。
- 创建了一个名为 ccGraph 的自定义 Angular 指令,它引入了一个 HTML 5 模板。
- 使用 ng-repeat 创建 N 个包含 ccGraph 元素的 div。 (连接中的 ng-repeat conn)
我在连接所有内容时遇到了概念性问题。如果我只是将 {{conn.name}} 放在 HTML 模板中,则名称会正确显示在每个 ccGraph div 中。
我的问题是我不知道如何将用于图形的 Javascript 代码实例附加到每个 ccGraph div。 Javascript 代码首先找到它嵌入的画布,然后从那里开始工作。
- Angular 会为每个 ccGraph 实例创建一个单独的 Javascript 代码实例吗?
- 如何使用包含 div 的名称来“初始化”Javascript 代码? (在我的独立 HTML 代码中,我使用 onLoad() 来完成所有初始绘图。)
好的,从代码的角度来看,我有这样的 index.HTML;
<BODY onload="initialise();" >
<div class="usageMeter" width="200px" height="500px" >
<canvas id="testIndicator" class="usageScale" width="200px" height="500px" >
Fallback content, in case the browser does not support Canvas.
</canvas>
以及绘制图形的 Javascript 代码,如下所示:
function initialise() {
mCanvas = document.getElementById("testIndicator");
ctx = mCanvas.getContext("2d");
ctx.translate(0.5, 0.5);
scaleWidth = mCanvas.width * 0.4;
scaleHeight = mCanvas.height * 0.8;
scaleX = mCanvas.width * 0.25;
scaleY = mCanvas.height * 0.1;
loadImages();
drawScale();
elapsedTime = 0.0;
oldElapsedTime = 0.0;
tid = setInterval(updateTime, tickInterval);
}
现在,我想使用 Angular SPA 来绘制 N 个这些图。所以,假设我的 Angular 代码还没有启动。从概念上讲,我如何将上述代码转换为由 Angular 模型驱动的 Angular 指令?
【问题讨论】:
-
分享你的一些代码会有所帮助。 :)
-
这是你想要做的吗?如果是,我可以回答解释会发生什么。 :) plnkr.co/edit/wgJo1gCnI9x9OKpuTlsp?p=preview
-
绝对正确。我会研究你的代码,看看你是怎么做的。如果你想用基本的解释做一个简短的回答,我很乐意接受。
-
抱歉耽搁了。我对正在发生的事情做了更深入的回答。如果仍有不清楚的地方,请告诉我,我会尝试修改答案。
标签: javascript angularjs html5-canvas