javascript - 在 .js 文件中设置变量

标签 javascript asp.net-mvc razor

我在 ASP.Net MVC 中工作,我正在尝试将我所有的 jQuery 代码移动到 .js 文件中。

MVC 的一个弱点是在 .JS 文件中使用 Razor 语法。所以,我正在做这样的事情:

HTML/ Razor :

<input type="hidden" id="appointmentID" value="@(Model.Appointment.ID)" />

然后在我的 .js 中,我会:

$(document).ready(function () {
    var appointmentID = $("#appointmentID").val();
});

我的问题是,每个浏览器实例是否会保留该 .js 文件的自己的版本,或者新的浏览器选项卡是否会覆盖 appointmentID 变量?

最佳答案

您似乎对文件本身和文件的执行感到困惑。该文件始终相同,但它经历的状态取决于传入的变量(在本例中为您输入的值)。文件本身并没有改变,只是代码的状态发生了变化。

在你的例子中:

$(document).ready(function () {
    var appointmentID = $("#appointmentID").val(); //@(Model.Appointment.ID)
});

@(Model.Appointment.ID) 只是分配给内存中的 appointmentID 的值。这与文件中写入的内容无关...只是文件中写入的内容告诉 js 将什么放入内存。

根据您的评论更新:

熟悉 window 变量/属性。您可以通过在 js 中的任何位置执行 console.log(window) 来检查它。如果您随后创建一个全局变量,您将看到它是 window 的一个属性。我最近对此做了详细的解释here (click).基本上,无论您在 html 文档中做什么,都在窗口内。很清楚看到什么是不同的文档。不同的页面...不同的选项卡等。如果页面已加载 - 这是一个不同的文档。显然,iframe 的情况有点奇怪,因为它是文档中的文档,但适用相同的逻辑。此外,并非所有事物都必然是任何事物的“属性(property)”。仅仅因为一切都在 window 的上下文中执行并不意味着一切都是 window 的属性。这超出了您的问题范围,所以我只想说您可以研究 scope/closures/封装。

关于javascript - 在 .js 文件中设置变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20058833/

相关文章:

javascript - 使用 axios 将图像上传到 AWS 预签名帖子 URL

javascript - 如何在 Typescript 的回调函数中访问 'this'?

c# - 从 cookie 创建和读取列表<>

asp.net-mvc - ipSecurity - 如何添加 IP 地址范围

asp.net-mvc - MVC 框架做了什么来避免它从大量使用反射中继承的低性能

c# - ASP MVC4 - 传递列表以通过 View 模型查看

javascript - 在 Node.js Mongoose 中,我想更新每个字段……我该怎么做?

javascript - 删除数组中的奇数

asp.net - 如何在使用Docx dll生成word文档时在标题中添加图像和文本?

c# - cshtml View "Section not defined: "featured2"