将javascript重构为外部文件

时间:2014-02-04 00:08:09

标签: javascript jquery asp.net-mvc-4 highcharts

我是ASP .Net和JQuery的初学者。请原谅我提出这个愚蠢的问题。我有一个Index.cshtml文件,如下所示。我正在使用Highcharts的示例代码来制作量表。我的问题是:<script></script>之间的代码冗长而混乱,我怎样才能使它更紧凑? 我已经尝试将其移动到Scripts文件夹中的外部文件myscript.js,并在<script src="Scripts/myscript.js"></script>中包含一行Index.cshtml,但它给出了错误,说$未定义,我怀疑可能是由于在浏览器中完成DOM之前加载了外部myscript.js。我已经尝试将代码放在_layout.cshtml中,但这也不是很好。谢谢你的帮助。

@model IEnumerable<WebApplication16.Models.BatteryLog>

@{
    ViewBag.Title = "Index";
}
@{
    Layout = "~/Views/Shared/_Layout.cshtml";
}
<script>$(function () {

    $('#gauge').highcharts({

        chart: {
            type: 'gauge',
            plotBackgroundColor: null,
            plotBackgroundImage: null,
            plotBorderWidth: 0,
            plotShadow: false
        },

        title: {
            text: 'Current'
        },

        pane: {
            startAngle: -150,
            endAngle: 150,
            background: [{
                backgroundColor: {
                    linearGradient: { x1: 0, y1: 0, x2: 0, y2: 1 },
                    stops: [
                        [0, '#FFF'],
                        [1, '#333']
                    ]
                },
                borderWidth: 0,
                outerRadius: '109%'
            }, {
                backgroundColor: {
                    linearGradient: { x1: 0, y1: 0, x2: 0, y2: 1 },
                    stops: [
                        [0, '#333'],
                        [1, '#FFF']
                    ]
                },
                borderWidth: 1,
                outerRadius: '107%'
            }, {
                // default background
            }, {
                backgroundColor: '#DDD',
                borderWidth: 0,
                outerRadius: '105%',
                innerRadius: '103%'
            }]
        },

        // the value axis
        yAxis: {
            min: 0,
            max: 200,

            minorTickInterval: 'auto',
            minorTickWidth: 1,
            minorTickLength: 10,
            minorTickPosition: 'inside',
            minorTickColor: '#666',

            tickPixelInterval: 30,
            tickWidth: 2,
            tickPosition: 'inside',
            tickLength: 10,
            tickColor: '#666',
            labels: {
                step: 2,
                rotation: 'auto'
            },
            title: {
                text: 'Volt'
            },
            plotBands: [{
                from: 0,
                to: 120,
                color: '#55BF3B' // green
            }, {
                from: 120,
                to: 160,
                color: '#DDDF0D' // yellow
            }, {
                from: 160,
                to: 200,
                color: '#DF5353' // red
            }]
        },

        series: [{
            name: 'Current',
            data: [80],
            tooltip: {
                valueSuffix: ' Volt'
            }
        }]

    },
    // Add some life
    function (chart) {
        if (!chart.renderer.forExport) {
            setInterval(function () {
                var point = chart.series[0].points[0],
                    newVal,
                    inc = Math.round((Math.random() - 0.5) * 20);

                newVal = point.y + inc;
                if (newVal < 0 || newVal > 200) {
                    newVal = point.y - inc;
                }

                point.update(newVal);

            }, 3000);
        }
    });
});</script>

<h2>Index</h2>
<div id="gauge" style="min-width: 310px; max-width: 400px; height: 300px; margin: 0 auto"></div>

1 个答案:

答案 0 :(得分:0)

当你使用'$'而不包括jquery文件

时,将会出现

$ undefined