angular 数据双向绑定问题

我不明白,程序刚执行,第39行就被执行两次,然后将input文本框内容改变时,39行也会执行,请大家帮忙解释下原理,谢谢!

 <!DOCTYPE html>
<html>
    <head>
        <meta charset="UTF-8">
        <title></title>
        <script src="angular.min.js"></script>
    </head>
    <body ng-app="my-app">

        <div ng-controller="firstController">
                <input type="text" ng-model="name" />
                <p ng-bind="name"></p>
                <button ng-click="passData()">按钮</button>
                {{person.say()}}
        </div>
        <hr />
        <div ng-controller="secondController">
            {{name}}
        </div>

        <script>
            var app = angular.module('my-app', []);
            app.run(['$rootScope',  function($rootScope){
                $rootScope.name = 'zhangsan';
            }])

            app.controller('firstController', ['$scope', '$rootScope', function($scope, $rootScope){
                $scope.name = $rootScope.name;

                $scope.passData = function(){
                    console.log('click.........');
                    $rootScope.name = $scope.name;
                }

                $scope.person = {
                    name : 'zhangsan',
                    age: 30,
                    say: function(){
                        console.log("I'm "+this.name+", I'm "+this.age);
                        return "I'm "+this.name+", I'm "+this.age;
                    }
                }

                function test(){
                    console.log(11111111111);
                }
                test();
                $scope.person.say();

            }])

            app.controller('secondController', ['$scope', '$rootScope', function($scope, $rootScope){

                //$scope.name = $rootScope.name;



            }])

        </script>


    </body>
</html>

http://www.cnblogs.com/freefish12/p/5808099.html

http://blog.csdn.net/w329300817/article/details/51970307

你写了两边,页面里面执行一次, controller里面也调用一次 $scope.person.say() {{person.say()]}