2013-09-23 69 views
0

首先,我確定我缺少導航並加載部分視圖的最佳實踐方式。所以,如果我以錯誤的方式去解決這個問題,請告訴我。我有一種感覺,我會讓它變得比它需要的更困難。顯示部分視圖時的運行代碼

我想要完成的是讓我的網站表現得像一個單一的頁面應用程序。爲了做到這一點,我在div中有很多部分視圖。我隱藏所有div,但是活動的。我不知道如何在部分視圖中僅在顯示時運行代碼。

下面是我在這種情況下關注(這是Index.cshtml)div和局部視圖:

<div id="app"> 
    @Html.Partial("~/Views/PartialViews/App.cshtml") 
</div> 

這是顯示的JavaScript局部視圖(也是在指數.cshtml):

function showApp(id) { 
     hideAll(); 
     $('#txtAppId').val(id); // This is how I'm passing data to the partial view 
     $('#app').show(); 
    } 

這種運作良好(至少就呈現局部視圖),但我怎麼能得到代碼App.cshtml只有當它是這個樣子運行

在App.cshtml(局部視圖):

<script> 
    $(function() { 
     // Note: This will execute as soon as the main page is loaded. I don't want 
     //  code to execute right away, but only when this view is shown. 
    }); 

    function doSomething() { 
     // Only when this view is shown do I want code to execute here. 
    } 
</script> 

怎樣纔可以有doSomething()運行中示出了部分視圖時?

+0

您可以在局部視圖結束時調用此函數,而不是「主」視圖。 –

+0

而且,這不是一個SPA,你知道,對吧? –

+0

在局部視圖結束時調用該函數?我不明白。只要它不是一個真正的SPA,我對此沒有問題,因爲那不是我的目標。這種方法怎麼樣並沒有使它成爲SPA?例如, –

回答

1

調用該函數告訴你的局部視圖後,在index.cshtml

function showApp(id) { 
     hideAll(); 
     $('#txtAppId').val(id); // This is how I'm passing data to the partial view 
     $('#app').show(); 
     doSomething(); //Here invoke it. 
    } 

當一個元件改變其知名度不能直接檢測和運行一些腳本,在這裏你有當它成爲可見的控制所以一旦你使它可見,就調用該方法。

+0

這麼簡單又容易的事情。我甚至沒有想過要這樣做。謝謝。 –

+0

@BobHorn不客氣...... :) – PSL

+0

僅供參考 - ReSharper建議我在窗口中添加'window':'window.doSomething();' –