1 <!DOCTYPE html>
2 <html >
3 <head>
4 <title>AngularJS</title>
5 <!--学习地址-->
6 <!--http://www.yiibai.com/angularjs/angularjs_includes.html-->
7 <!--http://docs.angularjs.cn/api/ng/filter/filter-->
8 <!--http://docs.angularjs.cn/api/ng-->
9 <!--推荐使用工具 vs2015 或 WebStorm-->
10 <!--加载框架-->
11 <script src="/Scripts/tool/angularjs/Angular.js"></script>
12 <script>
13 // 注册控制器
14 var mainApp = angular.module("mainApp", []);
15 mainApp.controller("Controller", function ($scope) {
16 $scope.model = {
17 title: "Angular",
18 fullName: function () {
19 var obj;
20 obj = $scope.model;
21 return obj.title + " name";
22 }
23 };
24 $scope.student = {
25 firstName: "MyStudend",
26 amount: 51
27 };
28 });
29 mainApp.factory('m', function () {
30 var factory = {};
31 factory.multiply = function (a, b) {
32 return a * b;
33 }
34 return factory;
35 });
36
37
38
39
40 </script>
41 </head>
42 <body ng-app="mainApp">
43 <h2>模型 - model</h2>
44 <p>
45 <b>模型是负责管理应用程序的数据。它响应来自视图的请求,同时也响应指令从控制器进行自我更新。</b>
46 </p>
47 <h2>视图 - view</h2>
48 <p>
49 <b>在一个特定的格式的演示数据,由控制器决定触发显示数据。它们是基于脚本的模板系统,如JSP,ASP,PHP,非常容易使用AJAX技术的集成。</b>
50 </p>
51 <h2>控制器 - controller</h2>
52 <p>
53 <b>控制器负责响应于用户输入并执行交互数据模型对象。控制器接收到输入,它验证输入,然后执行修改数据模型的状态的业务操作。</b>
54 </p>
55 <p>注意点:angular.module("mainApp", [])这样的注册只能有一次,其他地方使用会报错</p>
56 <p>ng-app:设定作用域</p>
57 <p>ng-model:设定模型变量</p>
58 <p>ng-controller:设置某个控制器的作用域</p>
59 <p>ng-bind:绑定模型</p>
60 <p>ng-init:初始化应用程序数据</p>
61 <p>ng-repeat:重复集合中的每个项目的HTML元素。用于迭代(循环)</p>
62 <p>ng-disabled:禁用</p>
63 <p>ng-show:显示</p>
64 <p>ng-hide:隐藏</p>
65 <p>ng-click:单击事件</p>
66 <p>ng-dbl-click:双击事件</p>
67 <p>ng-mousedown:当鼠标指针移动到元素上方,并按下鼠标按键时,会发生 mousedown 事件</p>
68 <p>ng-mouseup:当在元素上放松鼠标按钮时,会发生 mouseup 事件</p>
69 <p>ng-mouseenter:当鼠标指针穿过元素时,会发生 mouseenter 事件</p>
70 <p>ng-mouseleave:当鼠标指针离开元素时,会发生 mouseleave 事件</p>
71 <p>ng-mousemove:当鼠标指针在指定的元素中移动时,就会发生 mousemove 事件</p>
72 <p>ng-mouseover:当鼠标指针位于元素上方时,会发生 mouseover 事件</p>
73 <p>ng-keydown:当键盘或按钮被按下时,发生 keydown 事件</p>
74 <p>ng-keyup:当按钮被松开时,发生 keyup 事件。它发生在当前获得焦点的元素上</p>
75 <p>ng-keypress:当键盘或按钮被按下时,发生 keypress 事件</p>
76 <p>ng-change:当元素的值发生改变时,会发生 change 事件</p>
77
78 <!--控制器-->
79 <div ng-controller="Controller">
80 <p>模型1</p>
81 <p>
82 Hello {{'World'}} {{6666}}!
83 </p>
84 <p>模型2</p>
85 <p>
86 <input type="text" ng-model="name" placeholder="World" />
87 Hello {{name || 'World'}}!
88 </p>
89 <p>模型3</p>
90 <p>
91 <ul>
92 <li ng-repeat="item in [0, 1, 2, 3, 4, 5, 6, 7]">{{item}}
93 </li>
94 </ul>
95 </p>
96 <p>模型4</p>
97 <p>
98 {{model.title}}<br />
99 {{model.fullName()}}
100 </p>
101 <p>模型5</p>
102 <p>
103 <input ng-model="model.title" type="text" /><br />
104 <span ng-bind="model.title"></span>
105 </p>
106 <p>模型6</p>
107 <p>
108 <div ng-app="myapp01" ng-init="countries=[{locale:'en-US',name:'United States'},{locale:'en-GB',name:'United Kingdom'},{locale:'en-FR',name:'France'}]">
109 {{countries}}
110 <br />
111 {{countries[0].name}}
112 </div>
113 </p>
114 <script>
115 //自定义注册过滤器
116 mainApp.filter('filter', function () {
117 return function (input) {
118 if (input) {
119 return 'filter:\"' + input + '"';
120 }
121 return '';
122 }
123 });
124 </script>
125 <p>模型7</p>
126 <p>
127 大写过滤: {{student.firstName | uppercase}}<br />
128 小写过滤: {{student.firstName | lowercase}}<br />
129 货币过滤: {{student.amount | currency}}<br />
130 自定义过滤: {{student.firstName | filter}}<br />
131 排序过滤:<br />
132 <ul ng-repeat="i in [{name:'b'}, {name:'ab'}, {name:'a'}, {name:'bs'}] | orderBy:'name'">
133 <li>{{i.name}}</li>
134 </ul>
135 </p>
136 <p>模型8</p>
137 <p ng-controller="TestController">
138 <input type="checkbox" ng-model="enableDisableButton" />Disable Button
139 <input type="radio" ng-model="enableDisableButton" />Disable Button
140 <button ng-disabled="enableDisableButton">Click Me!</button>
141 <br />
142 <input type="checkbox" ng-model="showHide1" />Show Button
143 <button ng-show="showHide1">Click Me!</button>
144 <br />
145 <input type="checkbox" ng-model="showHide2" />Hide Button
146 <button ng-hide="showHide2">Click Me!</button>
147 <br />
148 <div ng-controller="TestController">
149 <p>Total click: {{ clickCounter }}</p>
150 <button ng-click="clickCounter = clickCounter + 1">Click Me!</button>
151 <button ng-click="clickTest()">Click Me!</button>
152 </div>
153 <script>
154 mainApp.controller("TestController", function ($scope) {
155 $scope.clickTest = function () {
156 $scope.clickCounter = $scope.clickCounter || 0;
157 $scope.clickCounter = $scope.clickCounter + 1;
158 };
159 });
160 </script>
161 </p>
162 <p>模型9</p>
163 <p>
164 <script>
165 // 注册工厂
166 mainApp.factory('MathService', function () {
167 var factory = {};
168 factory.multiply = function (a, b) {
169 return a * b;
170 }
171 return factory;
172 });
173
174 //注册服务
175 mainApp.service('CalcService', function (MathService) {
176 this.square = function (a) {
177 return MathService.multiply(a, a);
178 }
179 });
180
181 mainApp.controller('CalcController', function ($scope, CalcService) {
182 $scope.square = function () {
183 $scope.result = CalcService.square($scope.number);
184 }
185 });
186 </script>
187 <div ng-controller="CalcController">
188 <p>
189 Enter a number:
190 <input type="number" ng-model="number" />
191 <button ng-click="square()">X<sup>2</sup></button>
192 <p>Result: {{result}}</p>
193 </div>
194 </p>
195 <p>
196 <script>
197 //值
198 mainApp.value("defaultInput", 5);
199 //常量
200 mainApp.constant("configParam", "constant value");
201 mainApp.controller('CalcController', function ($scope, CalcService, defaultInput) {
202 $scope.number = defaultInput;
203 $scope.result = CalcService.square($scope.number);
204 $scope.square = function () {
205 $scope.result = CalcService.square($scope.number);
206 }
207 });
208 </script>
209 </p>
210 <p>模型10</p>
211 <p>
212 <script>
213 //Create a directive, first parameter is the html element to be attached.
214 //We are attaching student html tag.
215 //This directive will be activated as soon as any student element is encountered in html
216 mainApp.directive('student', function () {
217 //define the directive object
218 var directive = {};
219 //restrict = E, signifies that directive is Element directive
220 directive.restrict = 'E';
221 //template replaces the complete element with its text.
222 directive.template = "Student: <b>{{student.name}}</b> , Roll No: <b>{{student.rollno}}</b>";
223 //scope is used to distinguish each student element based on criteria.
224 directive.scope = {
225 student: "=name"
226 }
227 //compile is called during application initialization. AngularJS calls it once when html page is loaded.
228 directive.compile = function (element, attributes) {
229 element.css("border", "1px solid #cccccc");
230 //linkFunction is linked with each element with scope to get the element specific data.
231 var linkFunction = function ($scope, element, attributes) {
232 element.html("Student: <b>" + $scope.student.name + "</b> , Roll No: <b>" + $scope.student.rollno + "</b><br/>");
233 element.css("background-color", "#ff00ff");
234 }
235 return linkFunction;
236 }
237 return directive;
238 });
239 mainApp.controller('StudentController', function ($scope) {
240 $scope.Mahesh = {};
241 $scope.Mahesh.name = "Mahesh Parashar";
242 $scope.Mahesh.rollno = 1;
243
244 $scope.Piyush = {};
245 $scope.Piyush.name = "Piyush Parashar";
246 $scope.Piyush.rollno = 2;
247 });
248 </script>
249 <div ng-app="mainApp" ng-controller="StudentController">
250 <student name="Mahesh"></student>
251 <br />
252 <student name="Piyush"></student>
253 </div>
254 </p>
255 </div>
256 </body>
257 </html>