javascript - MVC Partial View 清除脚本 Jquery Ajax
问题描述
项目:Asp.NET Core 2.1
Working on a dashboard project that has a side nav that's divides into sub side's etc. On the right side there is a "main view" where the partial should be loaded, so when the partial is selected it should be rendered on the right-hand边。
我已经完成了所有这一切,但是当我有 2 个不同的视图和一些相等的 javascript(如变量)时,我会收到重新声明的错误,这是因为最后加载的脚本仍然被缓存。任何人都知道如何解决这个问题?
部分的变量也在文件中声明而不是分开的,也尝试过分开,但这不起作用。
考虑不加载这个 Ajax,但我喜欢它的流畅性。
例子
视图1:
<div>
<h1>Hello View1</h1>
<script>
const myVar1 = 'Hello';
</script>
<div>
视图2:
<div>
<h6>Hello View2</h6>
<script>
const myVar1 = 'Hello';
</script>
</div>
错误:重新声明 myVar1。
提前致谢!
解决方案
你需要的是一个命名空间。JavaScript 不使用命名空间关键字。取而代之的是闭包。您无法控制变量名称,尤其是当它不是您的代码时。尝试这个:
例子
视图1:
<div>
<h1>Hello View1</h1>
<script>
var cl1 = (function(e){
const myVar1 = 'closure 1'; // No public access.
return {
myVar1:myVar1, // Assign public access to cl1.myVar1.
vname:function(){return myVar1; } // or assign it as a getter.
};
})();
</script>
<div>
视图2:
<div>
<h6>Hello View2</h6>
<script>
var cl2 = (function(){
const myVar1 = 'closure 2';
return {
myVar1:myVar1,
vname:function(){return myVar1; }
};
})();
</script>
</div>
测试输出:
<script>
console.log('cl1.myVar1', cl1.myVar1, cl1.vname());
console.log('cl2.myVar1', cl2.myVar1, cl2.vname());
</script>
结果是:
cl1.myVar1 closure 1 closure 1
cl2.myVar1 closure 2 closure 2
推荐阅读
- postgresql - 为什么 Postgres 在使用覆盖索引时仍会进行位图堆扫描?
- javascript-automation - 如何使用 JXA 访问 UI 元素中的文本?
- c# - 是否可以使用自定义登录组件/页面配置 Blazor WebAssembly oidc
- python - .local 中的 Conda 包
- java - Mill Build Tool - 在不编译源代码的情况下安装依赖项
- c++ - #pragma omp parallel 仅使用 1 个线程
- python - 使用 selenium 在 Python 中抓取 Highcharts 时出错
- python - 数组的副本在函数中被覆盖
- python - 我如何预填充此更新表单
- sql - 用于查找最近数据并比较行的 SQL 查询