日日操夜夜添-日日操影院-日日草夜夜操-日日干干-精品一区二区三区波多野结衣-精品一区二区三区高清免费不卡

公告:魔扣目錄網為廣大站長提供免費收錄網站服務,提交前請做好本站友鏈:【 網站目錄:http://www.ylptlb.cn 】, 免友鏈快審服務(50元/站),

點擊這里在線咨詢客服
新站提交
  • 網站:51998
  • 待審:31
  • 小程序:12
  • 文章:1030137
  • 會員:747

導語

在軟件開發中,MVC或者MVVM是經常被用到的設計模式。在web前端開發中,之前我們需要自己寫許多代碼來完成這項功能。而現在有許多優秀的類庫可以幫我們實現這個功能。

許多優秀的前端框架都提供了強大的數據雙向綁定的功能。比如 Ember.js, Angular.js, KnockoutJS

如果我們在一些小型的項目中,只是希望某個功能區域有數據雙向綁定的功能,是不是就非得使用這么重的框架呢?事實上,我們可以用jQuery來實現一個簡單的數據雙向綁定的功能。

從頭開始做一個數據雙向綁定并不是那么復雜。簡單來說,需要實現下面三點:

  1. 我們需要指定View中的UI元素和數據中的屬性對應關系。
  2. 我們需要監聽View中的UI元素內容以及數據的變化。
  3. 最后就是我們需要把變化通知到所有與之綁定的數據或者UI元素。

JAVAscript Code

function DataBinder (objectId) {
 // 使用jQuery空對象作為監聽對象
 var pubSub = jQuery({});
 //
 var dataAttr = 'bind-' + objectId;
 var message = objectId + ':change';
 // 監聽dom中所有元素的 data-binding 屬性變化。并由pubSub來處理。
 $(document).on('input change', '[data-' + dataAttr + ']', function (event) {
 var $ele = $(this);
 console.log('$ele', $ele);
 pubSub.trigger(message, [$ele.data(dataAttr), $ele.val()]);
 });
 // pubSub把數據變化推送給所有與之綁定的頁面元素
 pubSub.on(message, function (event, proName, newValue) {
 $('[data-' + dataAttr + '=' + proName + ']').each(function () {
 var $ele = $(this);
 if($ele.is('input, textarea, select')) {
 $ele.val(newValue);
 } else {
 $ele.html(newValue);
 }
 })
 });
 return pubSub;
}
function User(uid) {
 var binder = new DataBinder(uid);
 var user = {
 attributes: {},
 set: function (attrName, val) {
 this.attributes[attrName] = val;
 binder.trigger(uid + ':change', [attrName, val, this]);
 },
 get: function (attrName) {
 return this.attributes[attrName];
 },
 _binder: binder
 }
 return user;
}

調用的時候,用uid與之關聯。

JavaScript Code

var user = new User('user');
$('#btnSet').bind('click', function (event) {
 user.set('name', 'Liuyuan211');
});

Html

<div class="item">
 <label>用戶名:</label><input type="text" data-bind-user="name" /><span data-bind-user="name"></span>
</div>
<div class="item">
 <input type="button" id="btnSet" value="Set" />
</div>

該例子中,uid就是 data-bind-user="name" 中的 user ,綁定的頁面元素會自動與user對應的屬性關聯。

題外話

如果項目中需要使用的數據綁定功能更復雜,knockout.js 庫也是一個不錯的選擇

希望本文能幫助到您!

點贊+轉發,讓更多的人也能看到這篇內容(收藏不點贊,都是耍流氓-_-)

關注 {我},享受文章首發體驗!

每周重點攻克一個前端技術難點。更多精彩前端內容私信 我 回復“教程”

原文鏈接:http://eux.baidu.com/blog/fe/use-jquery-to-achieve-a-simple-data-binding

作者:西瓜痞

分享到:
標簽:jQuery
用戶無頭像

網友整理

注冊時間:

網站:5 個   小程序:0 個  文章:12 篇

  • 51998

    網站

  • 12

    小程序

  • 1030137

    文章

  • 747

    會員

趕快注冊賬號,推廣您的網站吧!
最新入駐小程序

數獨大挑戰2018-06-03

數獨一種數學游戲,玩家需要根據9

答題星2018-06-03

您可以通過答題星輕松地創建試卷

全階人生考試2018-06-03

各種考試題,題庫,初中,高中,大學四六

運動步數有氧達人2018-06-03

記錄運動步數,積累氧氣值。還可偷

每日養生app2018-06-03

每日養生,天天健康

體育訓練成績評定2018-06-03

通用課目體育訓練成績評定