2015-04-21 27 views
0

我使用Knockout模板綁定動態構建HTML表單。每個表單定義都有自己的一組用於自定義驗證的JavaScript函數。With Knockout JS如何使用模板綁定動態呈現JavaScript代碼

如何將Java腳本代碼(函數)呈現給頁面,以便在驗證過程中調用它們? JavaScript代碼被動態插入的原因是因爲它們是用戶定義的。

最終的結果應該是:

<script type="text/javascript"> 
    function a() {}; // inserted dynamically 
    function b() {}: // inserted dynamically 
    ... 
</script> 

當自定義的驗證,使只使用一個JavaScript函數的存在是「沒問題」 - 我就可以使用eval()命令來執行它。然而,當函數需要引用另一個函數時,事情會變得更加複雜。我在這裏有兩個問題:

  1. 我不應該使用eval()命令,因爲它很慢並且不安全。
  2. 當函數需要引用另一個函數時,即使eval()選項也不會幫助我。

所以我想如果可以在腳本標記內動態呈現所有JavaScript函數,然後我可以使用[Window]。[functionName]而不是使用eval()命令來引用函數。

讓我強調這些JavaScript函數並不都位於一個單獨的文件中。它們分散在由服務器構建的複雜JSON對象中,該對象表示將驅動加載動態表單的表單定義。有許多不同的表單定義。

+2

爲什麼不使用knockout.validation併爲表單上的每個字段編寫自定義規則?將動態JavaScript添加到元素看起來有點像knockout.js的反模式。 –

+1

查看AMD加載程序組件的Knockout文檔。組件語法允許您將HTML和視圖模型分解爲可以從require.js動態加載的獨立模塊。 – McCroskey

+0

@CameronTinker:這個應用程序使用Knockout.js框架,但我們也使用Kendo UI。對於驗證,而不是KO驗證,我們使用的Kendo UI驗證器和Kendo UI工具提示很好地工作。 – user1309226

回答

0
  1. 在表單模板中創建腳本標記。
  2. 從JSON對象連接JavaScript函數並將它們存儲在字符串中。
  3. 使用JQuery插入包含JavaScript函數的變量到腳本標記中。