所有需要ng管理的代码必须被包裹在一个有ng-app指令的元素中
ng-app是ng的入口,表示当前元素的所有指令都会被angular管理(对每一个指令进行分析和操作)
利用angular实现双向绑定:
1 <div ng-app ng-init="user.name=‘world‘"> 2 <h1>使用NG实现双边数据绑定</h1> 3 <input type="text" 4 placeholder="请输入你的姓名" 5 ng-model="user.name"> 6 <p>hello <strong>{{user.name}}</strong></p> 7 </div>
模块:
1 <body> 2 <div ng-app="myApp" ng-controller="DemoController"> 3 <h1>使用NG实现双边数据绑定</h1> 4 <input type="text" placeholder="请输入你的姓名" ng-model="user.name"> 5 <p>hello <strong>{{user.name}}</strong></p> 6 <input type="button" ng-click="show()"> 7 </div> 8 <script src="bower_components/angular/angular.js"></script> 9 <script> 10 // 注册模块 通过module函数, 11 // 第一个参数是这个模块的名字 12 // !!! 第二个参数是这个模块所依赖的模块, 如果不依赖任何模块也必须传递第二个参数,如果没有传递第二个参数,angular.module就不是创建一个模块 13 // angular.module 返回 刚刚创建的模块对象 14 var app= angular.module(‘myApp‘,[]); 15 // app.controller 方法用于创建一个控制器,所创建的控制器属于myApp模块 16 // app.controller(‘DemoCtrl‘); 17 // 控制器函数的参数中有一个$scope 18 // angular.module(‘myApp‘).controller(‘DemoController‘, function($scope) { 19 // // 当控制器执行时会自动执行的函数 20 // $scope.user = {}; 21 // $scope.user.name = ‘张三‘; 22 // // $scope不仅仅可以往视图中暴露数据,还可以暴露行为 23 // $scope.show = function() { 24 // console.log($scope.user); 25 // }; 26 // }); 27 </script> 28 </body>
3,angular控制器:
<body ng-app="myModule" ng-controller="HelloController"> <script src="bower_components/angular/angular.js"></script> <script> // 由于控制器是必须出现在某个模块下的,想创建一个控制器必须先创建模块 var module = angular.module(‘myModule‘, []); // 返回的就是模块对象 // angular在执行控制器函数时, // 会根据参数的名字($scope)去自动的注入对象 // 根据参数名称传递对应对象,所以必须要写正确的参数名称 // module.controller(‘HelloController‘, function($scope) { // console.log($scope); // }); // // 由于压缩代码会改变参数名称,注册控制的标准方式就是通过第二个参数传递数组的方式(数组的成员最后一个就是原本的控制器函数,前面的成员都是需要注入的对象名称) module.controller(‘HelloController‘, [‘$scope‘,‘$http‘, function(a,b) { console.log(a); }]); </script> </body>
控制器2:
1 <body> 2 <table border="1" ng-controller="WorldController"> 3 <tr> 4 <td>用户名</td> 5 <td> 6 <input type="text" ng-model="user.username"> 7 </td> 8 </tr> 9 <tr> 10 <td>密码</td> 11 <td> 12 <input type="password" ng-model="user.password"> 13 </td> 14 </tr> 15 <tr> 16 <td></td> 17 <td> 18 <input type="button" ng-click="login()" value="登陆"> 19 </td> 20 </tr> 21 <tr> 22 <td></td> 23 <td>{{message}}</td> 24 </tr> 25 </table> 26 <script src="bower_components/angular/angular.js"></script> 27 <script> 28 // 创建一个模块 29 var app = angular.module(‘HelloApp‘, []); 30 // 为这个模块创建一个控制器 31 app.controller(‘WorldController‘, [‘$scope‘, function($scope) { 32 33 // 数据 34 $scope.user = { 35 username: ‘‘, 36 password: ‘‘ 37 }; 38 $scope.demo = ‘‘; 39 40 // 行为数据 41 $scope.login = function() { 42 // 因为数据的变化时双向的同步,所以界面上的值变化会同步到$scope.user上 43 console.log($scope.user); 44 }; 45 46 47 // 请输入用户名 输入格式不合法 48 $scope.message = ‘请输入用户名‘; 49 // $scope.message取决于$scope.user 50 51 // 官方的API中提供了一个$scope.$watch方法, 52 $scope.$watch(‘user.username‘, function(now, old) { 53 // 当user.username发生变化时触发这个函数 54 // console.log(‘now is ‘ + now); 55 // console.log(‘old is ‘ + old); 56 if (now) { 57 if (now.length < 7) { 58 $scope.message = ‘输入格式不合法‘; 59 } else { 60 $scope.message = ‘‘; 61 } 62 } else { 63 $scope.message = ‘请输入用户名‘; 64 } 65 }); 66 67 // angular 基本不用操作DOM,如果必要,可以使用angular提供的jqlite 68 // 69 // angular.element(‘body‘) 70 }]); 71 </script> 72 </body>
4.angular表达式:
1 <style> 2 /* ng-cloak指令就是在NG执行完毕过后自动移除 */ 3 4 [ng-cloak], 5 .ng-cloak { 6 display: none; 7 } 8 </style> 9 </head> 10 11 <body ng-app class="ng-cloak"> 12 {{ true ? ‘true‘:‘false‘ }} 13 <script src="bower_components/angular/angular.js"></script> 14 </body>