2017-05-26 学习记录:
一、入门程序
二、ng-controller控制器
三、AngularJS指令
四、ng-repeat
五、ng-model
六、Scope作用域
七、AngularJS过滤器
一、入门程序:
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <script src="http://cdn.static.runoob.com/libs/angular.js/1.4.6/angular.min.js"></script> </head> <body> <div ng-app="" ng-init="firstname='haorui'"> <!--ng-model的用法--> <p>姓名:<input type="text" ng-model="name"></p> <h1>第一种方式:{{name}}</h1> <!--在div中加ng-init后,ng-bind绑定到HTML中--> <p>第二种方式:<span ng-bind="firstname"></span></p> <!--表达式的方式,和ng-bind有相同的效果--> <p>第三种方式: {{firstname}}</p> </div> </body> </html>
1、<div ng-app=""> 中间不能写东西,若写值,则后面要跟ng-controller.
2、多个ng-app必须放js代码:一般来说只有一个 ng-app,多出来的不会执行,但是也没有硬性规定,如果你要多个ng-app也行,不过得用js启动 ,代码如下:
angular.bootstrap(document.getElementById("app2"), ['yourApp']);
二、ng-controller 控制器
AngularJS 应用程序由 ng-app 定义。应用程序在<div>内运行。
ng-controller="myCtrl" 属性是一个AngularJS指令。用于定义一个控制器。
myCtrl 函数是一个 JavaScript函数。
AngularJS 使用$scope 对象来调用控制器。
在 AngularJS 中,$scope 是一个应用对象(属于应用变量和函数)。
控制器的 $scope (相当于作用域、控制范围)用来保存AngularJS Model(模型)的对象。
控制器在作用域中创建了两个属性 (firstName 和 lastName)。
ng-model 指令绑定输入域到控制器的属性(firstName和lastName)。
<div ng-app="myApp" ng-controller="personCtrl"> 名: <input type="text" ng-model="firstName"><br> 姓: <input type="text" ng-model="lastName"><br> <br> 姓名: {{fullName()}} </div> <script> var app = angular.module('myApp', []); app.controller('personCtrl', function($scope) { $scope.firstName = "John"; $scope.lastName = "Doe"; $scope.fullName = function() { return $scope.firstName + " " + $scope.lastName; } }); </script>
三、AngularJS指令
AngularJS 通过被称为 指令 的新属性来扩展HTML。
AngularJS 通过内置的指令来为应用添加功能。
AngularJS 允许你自定义指令
数据绑定:
{{ firstName }} 是通过 ng-model="firstName" 进行同步。
AngularJS 中的数据绑定,同步了 AngularJS 表达式与 AngularJS 数据。
喜欢这个上下键可以增删减值。
四、ng-repeat重复HTML元素
<div data-ng-app="" data-ng-init="names=['Jani','Hege','Kai']"> <p>使用 ng-repeat 来循环数组</p> <ul> <li data-ng-repeat="x in names"> {{ x }} </li> </ul> </div>
AngularJS 完美支持数据库的 CRUD(增加Create、读取Read、更新Update、删除Delete)应用程序。
五、ng-model
1、验证用户输入:
<form ng-app="" name="myForm"> Email: <input type="email" name="myAddress" ng-model="text"> <span ng-show="myForm.myAddress.$error.email">不是一个合法的邮箱地址</span> </form> <p>在输入框中输入你的邮箱地址,如果不是一个合法的邮箱地址,会弹出提示信息。</p> 提示信息会在 ng-show 属性返回 true 的情况下显示。
2、ng-model 指令可以为应用数据提供状态值(invalid, dirty, touched, error):
<form ng-app="" name="myForm" ng-init="myText = '[email protected]'"> Email: <input type="email" name="myAddress" ng-model="myText" required></p> <h1>状态</h1> {{myForm.myAddress.$valid}} {{myForm.myAddress.$dirty}} {{myForm.myAddress.$touched}} </form>
六、Scope作用域
<div ng-app="myApp" ng-controller="myCtrl"> <h1>{{lastname}} 家族成员:</h1> <ul> <li ng-repeat="x in names">{{x}} {{lastname}}</li> </ul> </div> <script> var app = angular.module('myApp', []); app.controller('myCtrl', function($scope, $rootScope) { $scope.names = ["Emil", "Tobias", "Linus"]; $rootScope.lastname = "Refsnes"; }); </script>
七、angularJS过滤器
过滤器可以使用一个管道字符(|)添加到表达式和指令中。
现在都把JavaScript代码放在一个js文件里,在jsp里进行引用。
<div ng-app="myApp" ng-controller="personCtrl"> <p>姓名为 {{ lastName | uppercase }}</p> </div> <script src="http://www.runoob.com/try/demo_source/personController.js"></script>
----------------------------------自定义过滤器:可以将字符串反转------------------------------
<div ng-app="myApp" ng-controller="myCtrl"> 姓名: {{ msg | reverse }} </div> <script> var app = angular.module('myApp', []); app.controller('myCtrl', function($scope) { $scope.msg = "Runoob"; }); app.filter('reverse', function() { //可以注入依赖 return function(text) { return text.split("").reverse().join(""); } }); </script>
一个过滤器的综合小程序:
<!DOCTYPE html> <html> <meta charset="utf-8"> <script src="https://cdn.bootcss.com/angular.js/1.4.6/angular.min.js"></script> <body ng-app="myApp"> <div ng-controller="myCtrl"> <!--uppercase转换成大写--> <div ng-bind="myName | uppercase"></div> <!--lowercase转换成小写--> <div ng-bind="myName | lowercase"></div> <!--currency 过滤器将数字格式化为货币格式--> <div class="" ng-bind="money | currency : '¥'"> </div> <!--orderBy 过滤器根据表达式排列数组--> <div class="" ng-repeat="v in book | orderBy:'id'"> <p ng-bind="v.name"></p> </div> <!--orderBy 过滤器根据表达式排列数组 默认正序asc,倒序添加-负号--> <div class="" ng-repeat="v in book | orderBy:'-id' | filter : ''"> <p ng-bind="v.name" style="color:red;"></p> </div> <!--filter 过滤器根据表达式过滤不包含过滤器中的内容--> <!--自定义注入依赖myName--> <!--自定义过滤器aa--> <div class="" ng-bind="myName | aa" style="color:blue;"> </div> </div> <script> angular.module('myApp',[]).controller('myCtrl',function($scope){ $scope.myName="Dhx"; $scope.money=100; $scope.book=[ {"id":"1","name":"数据结构"}, {"id":"2","name":"算法基础"}, {"id":"5","name":"数据分析"}, {"id":"4","name":"Java语言程序设计"}, {"id":"3","name":"离散数学"} ] }).filter('aa',function(){ //split("")将val切割成数组,reverse()将数组反转,join("")将数组变成字符串 return function(val){ return val.split("").reverse().join(""); } }) </script> </body> </html>
HR hr ¥100.00 数据结构 算法基础 离散数学 Java语言程序设计 数据分析 数据分析 Java语言程序设计 离散数学 算法基础 数据结构 rH