AngularJS學習筆記(三)數據雙向綁定

雙向綁定

雙向綁定是AngularJS最實用的功能,它節省了大量的代碼,使咱們專一於數據和視圖,不用浪費大量的代碼在Dom監聽、數據同步上,關於雙向更新,可看下圖:javascript

下面,咱們經過代碼來實現。先不要糾結其中不明白的地方,先來體驗下數據綁定的效果。html

數據-->視圖

這裏咱們只演示有了數據之後,如何綁定到視圖上。java

<!DOCTYPE html>

<html ng-app="App">
<head>
    <script type="text/javascript" src="http://sandbox.runjs.cn/uploads/rs/394/xjz9g1bv/angular.js"></script>
    <script type="text/javascript">

    var App = angular.module("App", []);

    App.controller("ctrl", function ($scope) {
            
              $scope.username='張三'
            
                $scope.changename=function(){
                    $scope.username='李四';    
                }
        });
        
    </script>
</head>
    <body>
        <div ng-controller ="ctrl">
            <button class='btn btn-primary' ng-click='changename();'>
                username='李四'
            </button>
            <!--頁面加載初期,用戶可能會看到綁定的表達式-->
            <div>{{username}}</div>
            <!--此綁定不會出現上述狀況-->
            <div ng-bind='username'></div>
        </div>
    </body>
</html>

點擊按鈕以後,div內容變成 李四,效果如圖:git

jdfw

點擊這裏查看效果。github

視圖—>數據

上個例子,咱們看了數據變化後,視圖也會自動變化。那麼這個例子則是反過來,視圖變化,致使數據也跟着變化,那麼數據變化後,咱們如何知道呢,這兒咱們能夠經過另一個元素將數據再顯示出來。app

<!DOCTYPE html>

<html ng-app="App">
<head>
    <script type="text/javascript" src="http://sandbox.runjs.cn/uploads/rs/394/xjz9g1bv/angular.js"></script>
    <script type="text/javascript">

    var App = angular.module("App", []);

    App.controller("ctrl", function ($scope) {
            
              $scope.username='張三'
        });
        
    </script>
</head>
    <body>
        <div ng-controller ="ctrl">
            <input type='text' ng-model='username' />
            
            <div>{{username}}</div>
        </div>
    </body>
</html>

查看效果:dom

jdfw

點擊這裏查看效果。spa

實現機制

angular對經常使用的dom事件,xhr事件等作了封裝, 在裏面觸發進入angular的digest流程。
在digest流程裏面, 會從rootscope開始遍歷, 檢查全部的watcher。3d

具體請參考https://github.com/xufei/Make-Your-Own-AngularJS/blob/master/01.md文章吧。雙向綁定

相關文章
相關標籤/搜索