2010-07-29 16 views
2

我已經看到/閱讀過大量提倡包含在單獨文件中的「不顯眼」JavaScript。我準備將三個部分視圖中的所有JavaScript合併到一個文件中,然後我將在主文件中的某個位置引用它。來自視圖模型數據的JavaScript參數

我的問題是:是否有任何類型的JavaScript應保留在HTML?在我看來,可能會出現問題的一個例子是這樣的:

<script type="text/javascript"> 
    $(document).ready(function() { 
     $('#newQuoteLink').click(function() { 
      $('#newQuoteLink').hide(); 
      $('#newQuoteDiv').load('/Quote/Create/<%:Model.Book.BookID%>'); 
      return false; 
     }); 
    }); 
</script> 

--in特別是

<%:Model.Book.BookID%> 

上午我在承擔這個腳本,如果從一個單獨的文件中加載是行不通的糾正?

我主要想要檢查是否有任何警告或其他考慮事項將所有內容合併到單獨的單獨文件中。

在此先感謝。

回答

3

都能跟得上的我會更新,承諾是路線依賴就像你在你的JavaScript文件沒有永遠硬編碼的URL地址。這是壞的,壞的,壞的。我說這是不好的?

這在視圖中過多的JavaScript(這是一個帶寬浪費)。你可以嘗試一個全局JavaScript變量聲明你的觀點:

<script type="text/javascript"> 
    var quoteUrl = '<%: Url.Action("create", "quote", new { id = Model.Book.BookID }) %>'; 
</script> 

,並在你的JavaScript文件:

$(function() { 
    $('#newQuoteLink').click(function() { 
     $('#newQuoteLink').hide(); 
     $('#newQuoteDiv').load(quoteUrl); 
     return false; 
    }); 
}); 

那我也不會親自抓的路徑。仍然是一個script標記,其中包含全局JavaScript變量聲明。仍然是一種浪費。


事情變得這樣漂亮(而且是在你意識到不顯眼的JavaScript的實權那一刻):

<%: Html.ActionLink("Foo Bar Beer Link Text", "create", "quote", 
    new { id = Model.Book.BookID }, new { id = "newQuoteLink" }) %> 

,並在您外部的javascript:

$(function() { 
    $('#newQuoteLink').click(function() { 
     $('#newQuoteLink').hide(); 
     $('#newQuoteDiv').load(this.href); 
     return false; 
    }); 
}); 
+0

最後一個正是我在這種情況下需要做的。謝謝。 – asfsadf 2010-07-29 21:53:05

+0

@PolishedTurd,噢,我知道這正是你需要做的:-) – 2010-07-29 21:54:49

1

是的,你是對的,<%:Model.Book.BookID%>將不可見的腳本文件。這些東西是生成發送給瀏覽器的HTML的服務器端腳本的一部分。

你可以把所有的大部分工作在腳本中接受ID作爲一個PARAM功能可按,然後在你的HTML,從.ready(..)調用,比如doStuff("<%:Model.Book.BookID%>")

專家的Javascript功能:其他警告? 當我覺得有些

+0

因此,每一個依賴於這種參數的事件/函數都需要重寫以及呼叫被改變以及......嗯。我似乎有一些工作要做。 謝謝。 – asfsadf 2010-07-29 21:45:04

+0

關於SO協議的主題:是否立即標記出一個有用的答案,或者等待可能會添加的其他內容/警告? – asfsadf 2010-07-29 21:47:35

+0

這通常是元網站的問題,http://meta.stackoverflow.com/。不過,如果它回答你的問題,我會將其標記爲答案。如果有更好的海報,您可以隨時取消標記和標記其他人。 – 2010-07-29 23:52:31

相關問題