javascript - 对于全局变量,我可以使用什么替代方法代替 window[]
问题描述
目前,我拥有的现有代码正在使用
window['heatMapStartDate'] = "@Model.HeatMapStartDate.ToString("yyyy-MM-dd")
and
window['heatMapEndDate'] = "@Model.HeatMapEndDate.ToString("yyyy-MM-dd")
。
我想删除这些,因为我无法在打字稿文件上检查它们的引用。我正在寻找一种在 .cs 文件而不是 .cshtml 文件上使用它们的方法。任何建议将不胜感激。
主页.ts
const myApp = new Vue({
el: '#dashboard',
data: {
heatMapStartDate: (window as any).heatMapStartDate as string,
heatMapEndDate: (window as any).heatMapEndDate as string,
},
methods: {
...
},
});
索引.cshtml
@page
@model JorgeApp.Pages.Dashboard.Home.IndexModel
<div id="dashboard">
...
</div>
<script>
window['heatMapStartDate'] = "@Model.HeatMapStartDate.ToString("yyyy-MM-dd")";
window['heatMapEndDate'] = "@Model.HeatMapEndDate.ToString("yyyy-MM-dd")";
</script>
索引.cshtml.cs
namespace JorgeApp.Pages.Dashboard.Home
{
public class IndexModel : Models.PageModels.DashboardModel
{
...
public DateTime HeatMapStartDate { get; set; }
public DateTime HeatMapEndDate { get; set; }
...
public ActionResult OnGet()
{
HeatMapEndDate = DateTime.UtcNow.Date.AddDays(-1);
HeatMapStartDate = HeatMapEndDate.AddDays(-7);
return Page();
}
}
}
解决方案
您可以尝试浏览器本地存储在特定域上全局存储数据,或者您可以使用浏览器会话存储在特定会话(浏览器选项卡会话)上全局存储数据。
localstorage['heatMapStartDate'] = "@Model.HeatMapStartDate.ToString("yyyy-MM-dd")";
或者
sessionStorage['heatMapStartDate'] = "@Model.HeatMapStartDate.ToString("yyyy-MM-dd")";
并且您可以通过以下方式访问这些数据;
data: { heatMapStartDate: localstorage['heatMapStartDate'] as string }
或者
data: { heatMapStartDate: sessionStorage['heatMapStartDate'] as string }
推荐阅读
- html - 网格布局css中的按钮
- android - 尽管已在 Google Play 控制台中定义,但在代码中未找到 Android 订阅/购买
- reactjs - 如何在 mapStateToProps 中使用 useParams?
- swift - Xcode 在运行测试时出现“找不到图像”
- python - 如何将字符串划分为列表中的子字符串列表,但保持数字字符串完整 - Python?
- shopify - 如何为收藏创建自定义 Shopify ajax 过滤器?
- database - MongoDB Compass 按值分组
- c# - 统一激活某些东西只有第一次碰撞
- spring - Axon - 测试中的状态存储聚合异常
- python - Pandas Pivot 表和 Excel 的样式单元格