Я наконец-то написал хорошо работающий код.
Вот как я это сделал:
1) Определите мой холст внутри элемента в моем ASP.NET Razor View. Обратите внимание на использование атрибутов данных HTML5 в элементе Canvas. Они используются для передачи значений в мою функцию JavaScript, которая будет рисовать стрелки погоды внутри элемента canvas:
<td>
@string.Format("{0:f1}m/s ", weather.WindSpeed)
<canvas width="32" height="32" data-windSpeed="@(weather.WindSpeed)" data-windDirection="@(weather.WindDirection)">
</canvas>
<br />
@weather.WindSpeedName
</td>
2) Функция JavaScript вызывается после загрузки содержимого HTML, чтобы отобразить содержимое во всех элементах canvas, расположенных под определенным элементом таблицы:
function drawWindArrows() {
$('#weather canvas').each(function () {
var parent = this.parentNode;
var style = window.getComputedStyle(parent, null);
var color = style.color;
var windSpeed = $(this).attr('data-windSpeed');
var windDirection = $(this).attr('data-windDirection');
drawWindArrow(this, color, windSpeed, windDirection);
});
}
function drawWindArrow(canvas, color, windSpeed, windDirection) {
// Draw inside the canvas
}
Вы можете увидеть готовую веб-страницу здесь:
http://olavtlocation.cloudapp.net/weather