AngularJS(一)

来源:互联网 发布:mysql having 编辑:程序博客网 时间:2024/05/29 02:55

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 指令绑定输入域到控制器的属性(firstNamelastName)。

 

<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 = 'test@runoob.com'">    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>


运行结果:

HRhr¥100.00数据结构算法基础离散数学Java语言程序设计数据分析数据分析Java语言程序设计离散数学算法基础数据结构rH