返回介绍

数据 > 模板

发布于 2024-12-24 22:41:42 字数 3853 浏览 0 评论 0 收藏 0

6.1. 数据->模板

数据到表现的绑定,主要是使用模板标记直接完成的:

  <p>{ { w } } x { { h } }</p>

使用 `{ { } }` 这个标记,就可以直接引用,并绑定一个作用域内的变量。在实现上, ng 自动创建了一个 `watcher` 。效果就是,不管因为什么,如果作用域的变量发生了改变,我们随时可以让相应的页面表现也随之改变。我们可以看一个更纯粹的例子:

  <p id="test" ng-controller="TestCtrl">{ { a } }</p>

  <script type="text/javascript">
  var TestCtrl = function($scope){
    $scope.a = '123';
  }
  angular.bootstrap(document.documentElement);

上面的例子在页面载入之后,我们可以在页面上看到 123 。这时,我们可以打开一个终端控制器,输入:

  $('#test').scope().a = '12345';
  $('#test').scope().$digest();

上面的代码执行之后,就可以看到页面变化了。

对于使用 ng 进行的事件绑定,在处理函数中就不需要去关心 `$digest()` 的调用了。因为 ng 会自己处理。源码中,对于 ng 的事件绑定,真正的处理函数不是指定名字的函数,而是经过 `$apply()` 包装过的一个函数。这个 `$apply()` 做的一件事,就是调用根作用域 `$rootScope` 的 `$digest()` ,这样整个世界就清净了:

  <p id="test" ng-controller="TestCtrl" ng-click="click()">{ { a } }</p>

  <script type="text/javascript" charset="utf-8">
  var TestCtrl = function($scope){
    $scope.a = '123';

    $scope.click = function(){
      $scope.a = '456';
    }
  }
  angular.bootstrap(document.documentElement);

那个 `click` 函数的定义,绑定时变成了类似于:

  function(){
    $scope.$apply(
      function(){
        $scope.click();
      }
    )
  }

这里的 `$scope.$apply()` 中做的一件事:

  $rootScope.$digest();

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文