动态变量名称 javascript MVC
Dynamic variable names javascript MVC
我正在循环运行一些javascript代码,创建一个图表(使用谷歌可视化)。运行所有这些代码后,我需要在其他地方访问这些对象。我的问题是我不能再次调用"图表",因为它现在已经被覆盖了。
我已经设法找出了一个非常黑客的解决方案,它涉及使用 MVC @ thing在运行时动态生成一些东西,然后我强制将其作为变量名称。它有效,但我认为这不是解决这个问题的正确方法。有没有办法让我在每次运行时动态更改变量的名称?
以下代码将运行多次。
@{
var myChart = "cData" + Model.ChartId.ToString();
}
...
function () {
@myChart = new google visualization.ChartWrapper({ ... });
dashboard.bind(slider, @myChart);
dashboard.draw(data);
}
myChart 每次运行代码时都会更改,这给了我一个非常糟糕的字符串。通过不带 ' 标记,它在运行时成为一个变量。运行完所有这些后,我有一个调整大小函数,它运行以下内容:
@myChart .setOption('width', width);
@myChart .setOption('height', height);
@myChart .draw();
这也超级笨拙。我利用了javascript忽略空格的优势,这样我就可以像对待对象一样对待@myChart。
结果充满了语法错误,但它仍然运行,并且以预期的结果运行。所以我的问题是是否有一个"适当的"解决方案,而不是为我需要制作的每个单独的图表制作单独的 javascript 函数。
谢谢。
你所做的没有错,但它可能会更好。
首先,你不必依赖空间来混合JavaScript和Razor。
@(myChart).setOption('width', width);
但这仍然很丑陋。
方法1
<script>
// global (usual caveats about globals apply)
var charts = {};
</script>
@for( int i = 0; i < 10; i++ )
{
string chartId = "chart-" + i;
<script>
charts['@chartId'] = new Chart();
charts['@chartId'].setOption('width', width);
charts['@chartId'].setOption('height', height);
charts['@chartId'].draw();
</script>
}
方法2
<script>
function doResize(chart) {
chart.setOption('width', width);
chart.setOption('height', height);
chart.draw();
}
</script>
@for( int i = 0; i < 10; i++ )
{
<script>
(function () {
// limit the scope of the "chart" variable
var chart = new Chart();
// perform other init
// listen for resize in some manner
$(window).on("resize", function() {
doResize(chart);
});
})();
</script>
}
方法#2是我的首选方法,因为它管理范围并且易于阅读。
相关文章:
- 如何将Spring MVC Javascript模板引擎与双节棍集成
- 如何在C#MVC/Javascript中的运行时添加一个空实体
- WebStorm ASP.NET MVC JavaScript Debugging
- mvc Javascript文件更改后未更新
- MVC/Javascript:如何在表单提交中发布整数数组
- MVC Javascript基于模型设置文本输入值
- MVC-JavaScript翻译中字符串的全球化
- ASP.NET MVC Javascript重定向编码问题
- ASP.NET MVC Javascript在页面加载时未首次启动
- Asp.Net MVC JavaScript加载页面后不工作
- 使用MVC/Javascript实现回合制网页游戏
- MVC javascript回发前确认不工作
- MVC javascript方法调用未打开excel保存对话框
- MVC Javascript DateTime
- 我应该为这个应用程序使用MVC javascript框架吗?
- 用mvc javascript中的数据填充下拉列表
- MVC JavaScript's窗口.打开添加到url
- 在MVC javascript中解析@
- 加载资源失败:服务器响应状态为500(内部服务器错误)MVC JAVASCRIPT
- MVC JavaScript代码不工作