最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

AngularJS框架中的雙向數(shù)據(jù)綁定機制詳解【減少需要重復的開發(fā)代碼量】

 更新時間:2017年01月19日 11:37:00   作者:aitangyong  
這篇文章主要介紹了AngularJS框架中的雙向數(shù)據(jù)綁定機制,結(jié)合實例形式分析了AngularJS雙向數(shù)據(jù)綁定機制的原理及實現(xiàn)方法,以及減少需要重復開發(fā)代碼量的優(yōu)勢,需要的朋友可以參考下

本文實例講述了AngularJS框架雙向數(shù)據(jù)綁定機制。分享給大家供大家參考,具體如下:

之前寫的一篇《AngularJS入門示例之Hello World詳解》 ,介紹ng-model的時候提到:使用AngularJS的雙向數(shù)據(jù)綁定機制,不需要我們編寫繁瑣的代碼來實現(xiàn)同樣的功能?,F(xiàn)在我們看一個比較震撼的例子,看看angularJS是如何減少我們在前端開發(fā)中的繁瑣勞動的。越是感受到框架功能的強大,越是能夠激發(fā)學習的興趣和動力。

假如我們有一個學生信息列表,包含學生的姓名、地址和年齡信息。假如這個數(shù)據(jù)源信息保存在data.js文件中。

var g_phones = [
  <span style="white-space:pre"> </span>{
  "name": "wang xx",
  "address": "shanghai",
  "age": 20
},
{
  "name": "li xx",
  "address": "beijing & shanghai",
  "age": 10
},
{
  "name": "qian xx",
  "address": "xian",
  "age": 30
},
];

現(xiàn)在要求實現(xiàn)以下功能:

1、學生信息列表,默認全部顯示,顯示順序跟數(shù)組順序一致。
2、提供一個搜索框,能夠進行模糊搜索。只要某個學生的name、address、age有一個符號搜索條件,就可以顯示。
3、提供一個選擇框,能夠按照name或者age對學生信息進行排序。

效果圖如下:

使用angularJS實現(xiàn)上述效果的代碼如下:

<!--ng-app和ng-controller都是angularJS框架的語法-->
<html ng-app ng-controller="RootController">
  <head>
    <!-- 加載數(shù)據(jù)文件-->
    <script src="data.js"></script>
    <script src="angular-1.2.25.js"></script>
    <script>
    // angular中的控制器,即MVC模式中的C角色
    function RootController($scope)
    {
      //讀取數(shù)據(jù)源,保存到angular的scope中
      $scope.students = g_students;
      // 搜索字段(默認無條件,用空字符表示)
      $scope.queryProp = '';
      // 排序字段(默認無排序,用空字符表示)
      $scope.orderProp = '';
    }
    </script>
  </head>
  <body>
    <!--ng-model實現(xiàn)數(shù)據(jù)的雙向綁定-->
    Search: <input ng-model="queryProp">
    Sort by:
    <select ng-model="orderProp">
      <option value="name">name</option>
      <option value="age">age</option>
    </select>
    <!--遍歷students,對每個項stu,進行filter和orderBy-->
    <ul>
      <li ng-repeat="stu in students | filter:queryProp | orderBy:orderProp">
        <p>{{stu.name}}</p>
        <p>{{stu.address}}</p>
        <p>{{stu.age}}</p>
      </li>
    </ul>
  </body>
</html>

可以看到,實現(xiàn)上述功能,需要的所有HTML/JS代碼加起來不到40行,代碼是很簡潔的,很清晰。

如果不使用angularJS,我們使用JavaScript和jQuery來完成上述功能,我們必須要做的事情如下:

1、給search和sort 這2個控件,綁定事件處理函數(shù)。當搜索條件或者排序改變的時候,能夠?qū)崟r刷新學生信息列表。

2、由于有排序,所以必須要編寫選擇排序或冒泡等排序算法,需要考慮字符串比較和數(shù)字比較這2種情況。

3、在JS中,通過字符串拼接的方式將<li>插入到DOM中。寫過這種代碼的都知道,JS中進行HTML字符串的拼接,非常的復雜。

可以看到使用傳統(tǒng)的JS開發(fā)方式,有很多重復繁瑣的勞動,如事件處理函數(shù)的綁定、復雜的html字符串拼接等。通過這個例子,很明顯可以看到使用angularJS開發(fā)效率遠遠高于JQuery和javascript這種傳統(tǒng)的開發(fā)方式。如果你還沒有感受到angularJS的強大和吸引力,那么我們再看一下關(guān)于angular的產(chǎn)生背景。下面是來自 大漠窮秋譯作《用AngularJS開發(fā)下一代Web應用》的前言。

“關(guān)于Angular 的起源,我可以追溯到2009 年的Google Feedback 項目。當時,對于項目的開發(fā)速度以及如何編寫可測試代碼的問題,我們已經(jīng)經(jīng)受了幾個月的折磨。6 個月時,我們開發(fā)了差不多17000 行前端代碼。這時候,團隊中的一個成員Misko Hevery 做出了一個大膽的宣言:利用他自己業(yè)余時間所開發(fā)的一個開源庫,他可以在兩周之內(nèi)把目前所有東西重寫一遍。

我當時想,兩周的時間并不會給我們造成太大的影響,同時我們也接受了Misko 努力構(gòu)建一些東西的想法。然而Misko 最終還是估算錯了時間,他用了三個星期。但是,我們所有人還是被他深深地震撼了,更讓我們感到震撼的是,他所開發(fā)的新應用的代碼量從原來的17000 行壓縮到了1500 行。看起來,Misko 的東西值得深入推廣。Misko 和我決定,圍繞他所提倡的理念組建一個團隊,這個簡單的理念就是:簡化對web 開發(fā)者的經(jīng)驗要求?!?/p>

通過上面的背景介紹,可以看到angular確實能夠極大的減少代碼量,提高開發(fā)效率。行文至此,如果還是沒有激起您對angularJS的興趣和好奇,那么是我語言組織和表達能力不行,不是angular不行。

更多關(guān)于AngularJS相關(guān)內(nèi)容感興趣的讀者可查看本站專題:《AngularJS入門與進階教程》及《AngularJS MVC架構(gòu)總結(jié)

希望本文所述對大家AngularJS程序設(shè)計有所幫助。

相關(guān)文章

  • 淺析Angular19 自定義表單控件

    淺析Angular19 自定義表單控件

    這篇文章主要介紹了Angular19 自定義表單控件的相關(guān)資料,非常不錯,具有參考借鑒價值,需要的朋友可以參考下
    2018-01-01
  • 深入學習JavaScript的AngularJS框架中指令的使用方法

    深入學習JavaScript的AngularJS框架中指令的使用方法

    這篇文章主要介紹了深入學習JavaScript的AngularJS框架中指令的使用方法,指令的使用是Angular入門學習中的基礎(chǔ)知識,需要的朋友可以參考下
    2016-03-03
  • 再談Angular4 臟值檢測(性能優(yōu)化)

    再談Angular4 臟值檢測(性能優(yōu)化)

    這篇文章主要介紹了再談Angular4 臟值檢測(性能優(yōu)化),小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-04-04
  • angular中ui calendar的一些使用心得(推薦)

    angular中ui calendar的一些使用心得(推薦)

    下面小編就為大家?guī)硪黄猘ngular中ui calendar的一些使用心得(推薦)。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-11-11
  • 利用Jasmine對Angular進行單元測試的方法詳解

    利用Jasmine對Angular進行單元測試的方法詳解

    單元測試是一種能夠幫助開發(fā)者驗證代碼中某一部分有效性的技術(shù)。下面這篇文章主要給大家介紹了關(guān)于利用Jasmine對Angular進行單元測試的相關(guān)資料,文中介紹的非常詳細,需要的朋友可以參考借鑒,下面來一起看看吧。
    2017-06-06
  • angular中實現(xiàn)控制器之間傳遞參數(shù)的方式

    angular中實現(xiàn)控制器之間傳遞參數(shù)的方式

    本篇文章主要介紹了angular中實現(xiàn)控制器之間傳遞參數(shù)的方式,具有一定的參考價值,感興趣的小伙伴們可以參考一下。
    2017-04-04
  • AngularJS中如何使用$parse或$eval在運行時對Scope變量賦值

    AngularJS中如何使用$parse或$eval在運行時對Scope變量賦值

    這篇文章主要介紹了AngularJS中如何使用$parse或$eval在運行時對Scope變量賦值的相關(guān)資料,本文介紹的非常詳細,具有參考借鑒價值,需要的朋友可以參考下
    2016-01-01
  • Angular-Touch庫用法示例

    Angular-Touch庫用法示例

    這篇文章主要介紹了Angular-Touch庫用法,結(jié)合觸屏滑動事件的實現(xiàn)為例分析了Angular-Touch庫的相關(guān)使用技巧,需要的朋友可以參考下
    2016-12-12
  • angularjs實現(xiàn)柱狀圖動態(tài)加載的示例

    angularjs實現(xiàn)柱狀圖動態(tài)加載的示例

    本篇文章主要介紹了angularjs實現(xiàn)柱狀圖動態(tài)加載的示例,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-12-12
  • Angularjs編寫KindEditor,UEidtor,jQuery指令

    Angularjs編寫KindEditor,UEidtor,jQuery指令

    使用過 AngularJS 的朋友應該最感興趣的是它的指令。現(xiàn)今市場上的前端框架也只有AngularJS 擁有自定義指令的功能,并且AngularJS 是目前唯一提供Web應用可復用能力的框架。
    2015-01-01

最新評論

兴义市| 庐江县| 铁力市| 梨树县| 柞水县| 久治县| 施秉县| 双牌县| 海城市| 即墨市| 襄垣县| 云霄县| 徐闻县| 麦盖提县| 旺苍县| 博客| 九台市| 利津县| 永胜县| 印江| 瑞安市| 且末县| 馆陶县| 高碑店市| 太和县| 峡江县| 郓城县| 宜昌市| 荔浦县| 汉源县| 易门县| 蒙山县| 宜黄县| 三明市| 松原市| 浙江省| 淅川县| 辽阳县| 青岛市| 云安县| 扎囊县|