簡體   English   中英

MVC部分視圖清除腳本Jquery Ajax

[英]MVC Partial View clearing scripts Jquery Ajax

項目:Asp.NET Core 2.1

在儀表板項目上進行操作,該項目的側面導航分為子側面,等等。在右側有一個“主視圖”,應在其中加載部分,因此,當選擇了部分時,應在右側顯示側。

我已經完成了所有這些工作,但是當我有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不使用namespace關鍵字。 而是使用閉包。 您不能控制變量名,尤其是當它不是您的代碼時。 嘗試這個:

視圖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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM