天天看點

MVVM架構~Knockoutjs系列之js接收C#資料集合的方式方式一,通過ViewBag等容器實作的集合方式二,通過getJSON等方式實作異步擷取

在controller裡将資料拿到,并且存儲到ViewBag對象裡,最後在View上顯示出來,這是傳統的MVC開發方式,事實上引入Knockoutjs以後,這種方式還是适合的,Knockoutjs隻是在前台資料綁定中做了一點調整,它不在依賴于背景具體資料,你完全可以在

最後去為它動态綁定資料,一般地,我們會為這種頁面添加一個JS檔案,用來擷取資料,以實作前台開發人員與背景代碼開發人員的分離。

從view層拿資料的方式有兩種,第一是通過ViewBag,ViewData,TempData,Model等容器來存儲,然後在View上直接取即可,而第二種方式是通過一個GET請求,它通常是異步的,你可以使用JQ裡的getJSON,它可以友善的實作資料的擷取工作,它對集合的支

持是比較好的。

這時,json變量已經是一個Json數組了,它将C#裡的IEnumable集合轉換成了JSON對象

注意,異步執行,它的意思是說,你的頁面在一個ajax請求時,不會去等待它,而是直接執行下面的語句,這樣,對于大資料量情況下,浏覽器不會假死,使用者體驗會好一些,但有時,開發人員在寫代碼時,往往會掉到AJAX的陷阱中,看下面代碼:

不仔細看,看不出問題,但一運作程式,問題就出來了,“從伺服器那邊擷取不到資料”,這是為什麼呢,明明有資料呀,這就是AJAX的陷阱了,你的 ko.applyBindings(new Cart())沒有等待上面的取資料完,就輸出了,是以,什麼都沒有,下面是正常的代碼

你可以對比一下:

怎麼樣,隻是代碼的位置不同,結果就完全不同吧,呵呵!是以說,我們對問題的了解程度,有時,應該有一種“模棱兩不可”的精神!

繼續閱讀