我正在構建一個Web應用程序,該應用程序顯示錶中的客戶列表。表格上大約有15列包含這些客戶的不同位數據。表格上的單元格經常接收用戶輸入以更新其值。將UI與模型數據鏈接到JavaScript + jQuery Web應用程序的最佳實踐
在頁面加載時,Web應用程序發送帶有限定符的AJAX請求以從所有活動客戶中檢索適當的客戶子集。 JSON在全局對象數組上返回並擴展。此全局對象數組中的每個項表示該表上的一行:var myCustomerList = [{customer_data_object_1},{customer_data_object_2},{customer_data_object_3}]。
然後通過JavaScript,jQuery和mustache.js模板生成頁面的HTML。 JavaScript將遍歷全局數據對象(即myCustomerList [i])並生成行。我使用jQuery的。數據()方法將行本身鏈接回myCustomerList [I]:
$('#tbl_customer_list tr:last').data('cust_data',myCustomerList[i]);
我事件綁定到UI控件每個小區使用jQuery附加到行:
$('#tbl_customer_list tr:last td:last a').on('click',function(event) { custList.cellEvent.status.openDialog(this,event); });
事件處理函數,然後使用jQuery的.data()是指回到我的全局數據對象:
custList.cellEvent.status.openDialog = function(oLink,event) { var oCustData = $(oLink).closest('tr').data('cust_data'); //update the global data object oCustData.status = oLink.value; }
我有協調全局數據對象進行與數據庫表中的數據的變化獨立的代碼。
如果上面讓你感到困惑,這個頁面提供客戶端MVC方法我試圖採取的一個很好的概述:https://sites.google.com/site/jollytoad/mvcusingjquery
於是,兩個問題:
- 什麼是更好的將模型數據(瀏覽器端)鏈接到頁面上的各種UI組件的方式?請記住,我正在使用.data()在表格行DOM元素和全局數據對象之間創建鏈接。
- 什麼是組織/存儲模型數據(即myCustomerList)的更好方法?
我現在正在做的工作,但它似乎有點hacky,我污染全球命名空間。我不知道如果我們必須回到此頁面並添加獨立於客戶列表的小部件,它將會如何支持和維護。
我一直在考慮爲整個客戶列表表格(以及添加到頁面上的任何其他新窗口小部件的新類)創建一個類,並將該模型數據存儲在該類的屬性中。但我認爲我會先來這裏獲得關於這方面最佳實踐的一些技巧。
當您使用'new MyView({model:mymodel})創建視圖的新實例;' – tkone 2012-02-21 03:39:52