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()命令來執行它。然而,當函數需要引用另一個函數時,事情會變得更加複雜。我在這裏有兩個問題:
- 我不應該使用eval()命令,因爲它很慢並且不安全。
- 當函數需要引用另一個函數時,即使eval()選項也不會幫助我。
所以我想如果可以在腳本標記內動態呈現所有JavaScript函數,然後我可以使用[Window]。[functionName]而不是使用eval()命令來引用函數。
讓我強調這些JavaScript函數並不都位於一個單獨的文件中。它們分散在由服務器構建的複雜JSON對象中,該對象表示將驅動加載動態表單的表單定義。有許多不同的表單定義。
爲什麼不使用knockout.validation併爲表單上的每個字段編寫自定義規則?將動態JavaScript添加到元素看起來有點像knockout.js的反模式。 –
查看AMD加載程序組件的Knockout文檔。組件語法允許您將HTML和視圖模型分解爲可以從require.js動態加載的獨立模塊。 – McCroskey
@CameronTinker:這個應用程序使用Knockout.js框架,但我們也使用Kendo UI。對於驗證,而不是KO驗證,我們使用的Kendo UI驗證器和Kendo UI工具提示很好地工作。 – user1309226