MVC knockoutjs知識點總結

2022-07-13 14:18:15 字數 1583 閱讀 4770

工作需要,使用到了mvc開發一部分web頁面,並且使用了knockoutjs前端框架。相關技術點寫在這裡,算是方便以後查閱。

/*全部是個人觀點和經驗,寫下來也是方便自己,不保證全部正確,特別宣告,防止誤人子弟*/

【mvc部分】

新建乙個mvc工程,目錄結構就已經自動規劃好,按照這個結構放入相應的檔案,實際操作非常簡單。

個人認為框架這種東西,目的就是方便快速地開發,所以盡量接受並且按照給出的模式開發,不要打破規則(高手除外),才能夠更好地發揮它原本的優勢。而且新手也不會容易把自己搞得暈頭轉向。

建立工程時檢視引擎我選擇的是razor,好處就是語法會有更好的閉合,不容易出錯。當然razor的優勢不僅於此啦。

來一張新建空白mvc工程的目錄圖:

其實並沒有用到全部的功能,複雜的東西都沒有深入研究(不求甚解要批評)

【knockoutjs部分】

knockoutjs官方文件:

knockoutjs是乙個js的框架,在前端模擬mvvm,幫助我們實現了前端的資料雙向繫結。

js中維護乙個model物件,畫面中使用特定語法將model中的屬性繫結到控制項。

knockoutjs有多種繫結方式,例如visible繫結,html繫結,for繫結等等。

*但是,實際使用時,發現大量資料使用for繫結時會有效能問題,會導致畫面長時間卡死。使用需要慎重。(推測繫結實際也是操作dom,大量操作dom必然會讓畫面卡死)

舉個栗子:

a.首先定義乙個model

var viewmodel = function ()
b.例項化乙個model物件

mymodel = new viewmodel();
c.設定屬性值

此處的datamodel是對應後台的model層的乙個模型物件,具體轉換方式可以參考後面的【前端model與後台model關係】

resetdata(datamodel);

function resetdata(datamodel)

d.繫結到ko

e.畫面控制項繫結

測試測試

knockoutjs繫結還可以指定作用範圍,類似這樣:

這時mymodel的作用域就限定在mydiv中。

【前端model與後台model關係】

a.controller中對model物件進行轉換,存入viewbag中

viewbag.datamodel = globalobject.escape(newtonsoft.json.jsonconvert.serializeobject(mydatamodel));
b.前台將viewbag中的資料轉換為json物件

var datamodel = json.parse(unescape("@viewbag.datamodel"));
c.至此,可以使用refreportvm中的屬性

var strnewtext = datamodel.strnewtext;

知識星球 預備知識

1.tenorflow 安裝 參考 tensorflow安裝教程 tensorflow 安裝教程 tensorflownews 2.tensrflow基礎 關注圖 會話 tensor 變數 feed和fetch。使用圖 graphs 來表示計算任務 在被稱之為會話 session 的上下文 cont...

HashMap知識,ArrayList知識

hashtable 的擴容機制 void resize int newcapacity entry newtable new entry newcapacity transfer newtable table newtable threshold int newcapacity loadfactor...

知識背後的知識

我剛剛上政治課的時候,總是不明白 形上學 是什麼東西,課本總是語焉不詳,又大加撻伐 後來,我從 現代漢語詞典 里查到了 形上學 的概念,把它工工整整地抄在扉頁上,現在還大致記得內容 一種哲學觀點 強調用靜止 孤立 片面的眼光看待世界 到後來終於有機會看點哲學原著,才知道 形上學 並不僅僅是 一種 哲...