【AngularJS】数据绑定的最佳实践

    xiaoxiao2021-03-25  132

            由于JavaScript自身的特点,以及它在传递值和引用时的不同处理方式,通常认为,在视图中通过对象的属性而非对象本身来进行引用绑定,是Angular中的最佳实践。

    <!doctype html> <html ng-app> <head> <!-- <script src="http://cdn.static.runoob.com/libs/angular.js/1.4.6/angular.min.js"></script> --> <script src="http://ngnice.com/lib/angular/1.2.16/angular.js"></script> </head> <body> <div ng-controller="myCtrl"> <h1>Hello {{clock}}</h1> </div> <script> function myCtrl($scope, $timeout){ var updateClock = function(){ $scope.clock = new Date(); $timeout(function(){ updateClock(); }, 1000); }; updateClock(); } </script> </body> </html>

            如果把这个最佳实践应用到上面时钟的例子中,需要把视图中的代码改写成下面这样:

    <!doctype html> <html ng-app> <head> <!-- <script src="http://cdn.static.runoob.com/libs/angular.js/1.4.6/angular.min.js"></script> --> <script src="http://ngnice.com/lib/angular/1.2.16/angular.js"></script> </head> <body> <div ng-controller="myCtrl"> <h1>Hello {{clock.now}}</h1> </div> <script> function myCtrl($scope){ $scope.clock = {now: new Date()}; var updateClock = function(){ $scope.clock.now = new Date(); }; setInterval(function(){ $scope.$apply(updateClock); }, 1000); updateClock(); } </script> </body> </html>

               在这个例子中,相比每秒钟都更新$scope.clock,更新clock.now的值会是更好的选择。

           大家看了上面的例子后,或许有些人就开始疑问了,每个controller绑定一个函数,这个函数的第一个参数是$scope,所有的数据和方法都在$scope上下文里面,而且这个函数是全局函数,如果界面上有很多controller呢?不会有很多个全局函数吧?(注意:这种全局函数的方式在1.3.x版本后已经被取消了)

    转载请注明原文地址: https://ju.6miu.com/read-6398.html

    最新回复(0)