数据绑定data-binding

上一节我们介绍了如何将ng-controller的数据显示在HTML当中,但是我们如何在页面中修改这些数据呢?这一步操作也很简单。

我们先直接看看代码吧!

  1. <!DOCTYPE html>
  2. <html lang="zh" ng-app="App">
  3. <head>
  4. <meta charset="UTF-8">
  5. <!-- 网页的标题,我们在这里使用了AngularJS的基本表达式 -->
  6. <title>{{"学习AngularJS 1.x"}}</title>
  7. </head>
  8. <body>
  9. <!-- 将FirstCtrl绑定到这个div标签上,这个标签中的内容将可以使用FirstCtrl中的数据-->
  10. <div ng-controller="FirstCtrl">
  11. <h1>{{data.message + " World!"}}</h1>
  12. <!-- 这里增加了一个input输入框,并使用ng-model绑定了data.message-->
  13. <input type="text" ng-model="data.message">
  14. </div>
  15. <script type="text/javascript" src="components/angular/angular.js"></script>
  16. <script type="text/javascript" src="js/app.js"></script>
  17. </body>
  18. </html>

运行结果

图4-3 ng-controller运行结果

如果您实际运行代码,会发现,您每输入/删除一个文字,改动会马上在上方显示出来。这就是数据绑定的魅力!

功能的绑定

界面操作里面还有一个重要的功能,就是界面上按钮的与控制器中的函数进行绑定。这个也很容易实现:

  1. App.controller("FirstCtrl", function($scope){
  2. $scope.data = {
  3. message : "Hello"
  4. };
  5. //在$scope上绑定一个函数
  6. $scope.onClick = function(){
  7. alert($scope.data.message);
  8. }
  9. });
  1. <div ng-controller="FirstCtrl">
  2. <h1>{{data.message + " World!"}}</h1>
  3. <input type="text" ng-model="data.message">
  4. <!-- 这里我们放置一个按钮,并使用ng-click绑定了$scope.onClick事件-->
  5. <input type="button" value="按钮" ng-click="onClick()">
  6. </div>

点击按钮,我们即可看到数据通过弹出框显示了出来(onClick函数中的逻辑)。

图4-3 ng-click运行结果

更多地方的绑定

除了用于显示信息外,数据绑定还可用于其他地方。比如,下面的例子用于根据输入来调整样式:

  1. <!DOCTYPE html>
  2. <html lang="zh" ng-app="App">
  3. <head>
  4. <meta charset="UTF-8">
  5. <title>{{"学习AngularJS 1.x"}}</title>
  6. <style type="text/css">
  7. /* 删除线 */
  8. .strike {
  9. text-decoration: line-through;
  10. }
  11. /* 粗体 */
  12. .bold {
  13. font-weight: bold;
  14. }
  15. /* 红色 */
  16. .red {
  17. color: red;
  18. }
  19. </style>
  20. </head>
  21. <body>
  22. <input type="text" ng-model="data.style">
  23. <div class="{{data.style}}">示例文本(可输入strike bold red)来调整样式</div>
  24. <script type="text/javascript" src="components/angular/angular.js"></script>
  25. <script type="text/javascript" src="js/app.js"></script>
  26. </body>
  27. </html>

运行效果如下:

图4-3-1 ng-click运行结果