現在的框架都講究什麼單向綁定,雙向綁定的都是什麼東西?
- 單向資料綁定:指的是我們先把模板寫好,然後把模板和資料(資料可能來自後台)整合到一起形成HTML程式碼,然後把這段HTML程式碼插入文件流裡面。
- 雙向資料綁定:資料模型(Module)和視圖(View)之間的雙向綁定。就是我不管修改數據模型的相關數據,還是視圖上的數據,相對應的數據也會跟著更新。
主要的就是事件的綁定。
- 在視圖層(View)上,可以綁定keyup事件,來更新資料模型
- 在資料模型上面利用Object.defineProperty()方法定義物件的set方法,在觸發物件屬性設定時,將view層的資料也修改掉。
<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <title>Title</title></head><body><input type="text" id="myinput" ><script> var input = document.getElementById("myinput"); var obj = {}; Object.defineProperty(obj, "input", { get: function () { return input.value; }, set: function (val) { input.value = val; changeCallback(input.value); } }); input.onkeyup = function () { obj.input = input.value; }; function changeCallback(val) { console.log("这里是不管view层,还是module层修改后的回调,最后设置的值是"+val); }</script></body></html>
首先,我們先使用Object.defineProperty()方法設定obj的set方法,只要修改obj的input屬性,就會觸發這個這個set方法,然後觸發回調,這就實現了module層的資料綁定。
然後,再input上綁定keyup事件,實作了view層的綁定。
只要兩者有一個修改,不管input的value值,還是取得obj的input屬性,都是取得最新修改的值。
這應該是最簡單的思路了。
以上是js實作雙向資料綁定的方法的詳細內容。更多資訊請關注PHP中文網其他相關文章!