angualrjs学习总结二(作用域、控制器、过滤器)
一:Scope简介
Scope(作用域) 是应用在 HTML (视图) 和 JavaScript (控制器)之间的纽带。
Scope 是一个对象,有可用的方法和属性。
Scope 可应用在视图和控制器上。
举例:
<!doctype html>
<html>
<head>
<script src="http://apps.bdimg.com/libs/angular.js/1.4.6/angular.min.js">
</script>
</head>
<body ng-app="myApp" ng-controller="myCtrl">
姓名:{{carname}}
<script>
var app=angular.module('myApp',[]);
app.controller('myCtrl',function($scope){
$scope.carname = 'BWM';
});
</script>
</body>
</html>
二:解决滚动条消失的问题
在iframe页面中加入框架DIV style设置为 width=100%;height=100%;overflow:auto;
<div style="width=100%;height=100%;overflow:auto"> overflow:auto或者scroll;
/*code*/
</div>
三:js框架MVC思想
AngularJS 应用组成如下:
View(视图), 即 HTML。
Model(模型), 当前视图中可用的数据。
Controller(控制器), 即 JavaScript 函数,可以添加或修改属性。
如果修改了视图,模型和控制器也会相应的变化。
<!doctype html>
<html>
<head>
<script src="http://apps.bdimg.com/libs/angular.js/1.4.6/angular.min.js"></script>
</head>
<body ng-app="myApp" ng-controller="myCtrl">
<div>
<label for="myName">姓名:</label>
<input type="text" ng-model="myName"/>
</div>
<div>
{{myName}}
</div>
<script>
var app=angular.module('myApp',[]);
app.controller('myCtrl',function($scope){
$scope.myName = 'name';
});
</script>
</body>
</html>
四:scope的作用域
所有的应用都有一个 $rootScope,它可以作用在 ng-app 指令包含的所有 HTML 元素中。
$rootScope 可作用于整个应用中。是各个 controller 中 scope 的桥梁。用 rootscope 定义的值,可以在各个 controller 中使用。
<!doctype html>
<html>
<head>
<script src="http://apps.bdimg.com/libs/angular.js/1.4.6/angular.min.js"></script>
</head>
<body ng-app="myApp" ng-controller="myCtrl">
<div>
<p>姓氏为:{{lastname}}</p>
<ul>
<li ng-repeat="x in names">{{x + " " +lastname}}</li>
</ul>
</div>
<script>
var app = angular.module('myApp',[]);
app.controller('myCtrl',function($scope){
$scope.names= ['tom','jack','lucy'];
$scope.lastname = 'Li';
});
</script>
</body>
</html>
五:控制器
AngularJS 应用程序被控制器控制。
ng-controller 指令定义了应用程序控制器。
举例:
<!doctype html>
<html>
<head>
<script src="http://apps.bdimg.com/libs/angular.js/1.4.6/angular.min.js"></script>
</head>
<body ng-app="myApp" ng-controller="myCtrl">
<div>
<p>名:<input type="text" ng-model="firstname"/></p>
<p>姓:<input type="text" ng-model="lastname"/></p>
</div>
<div>
<p>{{fullname()}}</p>
</div>
<script>
var app = angular.module('myApp',[]);
app.controller('myCtrl',function($scope){
$scope.firstname = 'Jack';
$scope.lastname = 'Li';
$scope.fullname = function(){
return $scope.firstname +" "+$scope.lastname;
}
});
</script>
</body>
</html>
控制器是 JavaScript 对象,由标准的 JavaScript 对象的构造函数 创建。
AngularJS 应用程序由 ng-app 定义。应用程序在 <div> 内运行。
ng-controller="myCtrl" 属性是一个 AngularJS 指令。用于定义一个控制器。
myCtrl 函数是一个 JavaScript 函数。
AngularJS 使用$scope 对象来调用控制器。
在 AngularJS 中, $scope 是一个应用象(属于应用变量和函数)。
控制器的 $scope (相当于作用域、控制范围)用来保存AngularJS Model(模型)的对象。
控制器在作用域中创建了两个属性 (firstName 和 lastName)。
ng-model 指令绑定输入域到控制器的属性(firstName 和 lastName)。
六:引入外部文件
外部文件中的控制器
<!doctype html>
<html>
<head>
<script src="http://apps.bdimg.com/libs/angular.js/1.4.6/angular.min.js">
</script>
</head>
<body ng-app="myApp" ng-controller="myCtrl">
<div>
名:<input type="text" ng-model="firstname"/><br>
姓:<input type="text" ng-model="lastname"/>
</div>
<div>
{{fullname()}}
</div>
<script src="personController.js"></script>
</body>
</html>
personController.js文件内容如下:
angular.module('myApp',[]).controller('myCtrl',function($scope){
$scope.firstname = 'Jack';
$scope.lastname = 'Tom';
$scope.fullname = function(){
return $scope.firstname + " " + $scope.lastname;
}
});
七:AngularJS 过滤器
过滤器可以使用一个管道字符(|)添加到表达式和指令中
AngularJS 过滤器可用于转换数据:
currency 格式化数字为货币格式。
filter 从数组项中选择一个子集。
lowercase 格式化字符串为小写。
orderBy 根据某个表达式排列数组。
uppercase 格式化字符串为大写。
举例:
//显示名称的大写
<div ng-app="myApp" ng-controller="myCtrl">
<p>{{firstname | uppercase}}</p>
</div>
//显示时,按照国家首字符自然顺序排列
<div ng-app="myApp" ng-controller="namesCtrl">
<ul>
<li ng-repeat="x in names | orderBy:'country'">
{{ x.name + ', ' + x.country }}
</li>
</ul>
<div>
八:过滤输入
输入过滤器可以通过一个管道字符(|)和一个过滤器添加到指令中,该过滤器后跟一个冒号和一个模型名称。
filter 过滤器从数组中选择一个子集:
举例:
<div ng-app="myApp" ng-controller="namesCtrl">
<p><input type="text" ng-model="test"></p>
<ul>
<li ng-repeat="x in names | filter:test | orderBy:'country'">
{{ (x.name | uppercase) + ', ' + x.country }}
</li>
</ul>
</div>
九:service服务
在 AngularJS 中,服务是一个函数或对象,可在你的 AngularJS 应用中使用。
AngularJS 内建了30 多个服务。
1:$location 服务,它可以返回当前页面的 URL 地址。
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<script src="http://apps.bdimg.com/libs/angular.js/1.4.6/angular.min.js">
</script>
</head>
<body ng-app="myApp" ng-controller="myCtrl">
<div>
<p>请求地址为:{{myUrl}}</p>
</div>
<script>
angular.module('myApp',[]).controller('myCtrl',function($scope,$location){
$scope.myUrl = $location.absUrl();
});
</script>
</body>
</html>
2:$http服务,发送请求到服务器,然后服务器响应传送数据过来。
var app = angular.module('myApp', []);
app.controller('myCtrl', function($scope, $http) {
$http.get("welcome.htm").then(function (response) {
$scope.myWelcome = response.data;
});
});
3:$timeout服务,定时服务
angular.module('myApp',[]).controller('myCtrl',function($scope,$location,$http,$timeout){
$timeout(function(){
var d = new Date();
$scope.msg = d.getHours() +":"+d.getMinutes()+":"+d.getSeconds();
},3000);
});
4:$interval服务,设置时间间隔服务
angular.module('myApp',[]).controller('myCtrl',function($scope,$location,$http,$interval){
$timeout(function(){
$scope.msg = new Date().toLocaleTimeString();
},1000);
});
API:
toLocaleTimeString() :根据当地时间格式,将对应的时间部分转换为字符串
toLocaleDateString() :根据当地时间格式,将对应的日期部分转换为字符串
5:创建自定义服务,然后连接到模块中
<script>
var app = angular.module('myApp',[])
//自定义服务,然后传递到控制器模块
app.service('hexmethod',function(){
this.myFunc = function(x){
return x.toString(16);
}
});
app.controller('myCtrl',function($scope,hexmethod){
$scope.msg = hexmethod.myFunc(255);
});
</script>
6:在过滤器中使用自定义服务
<script>
var app = angular.module('myApp',[]);
//自定义服务,转换为16进制数
app.servie('hexmethod',function(){
this.myFunc = function(x){
return x.toString(16);
}
//自定义过滤器
app.filter('myFormat',['hexmethod',function(hexmethod){
return function(x){
hexmethod.myFunc(x);
}
}]);
});
</script>
举例:将数组内的数字过滤成为16进制数
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<script src="http://apps.bdimg.com/libs/angular.js/1.4.6/angular.min.js">
</script>
</head>
<body ng-app="myApp" ng-controller="myCtrl">
<div>
<p>数组[255,254,16]通过过滤器转换16进制数</p>
<ul>
<li ng-repeat="x in arrs">{{x|myFormat}}</li>
</ul>
</div>
<script>
var app = angular.module('myApp',[]);
app.service('hexmethod',function(){
this.myFunc = function(x){
return x.toString(16);
}
});
app.filter('myFormat',['hexmethod',function(hexmethod){
return function(x){
return hexmethod.myFunc(x);
}
}]);
app.controller('myCtrl',function($scope){
$scope.arrs = [255,254,16] ;
});
</script>
</body>
</html>
angualrjs学习总结二(作用域、控制器、过滤器)的更多相关文章
- Asp.Net MVC学习总结(二)——控制器与动作(Controller And Action)
一.理解控制器 1.1.什么是控制器 控制器是包含必要的处理请求的.NET类,控制器的角色封装了应用程序逻辑,控制器主要是负责处理请求,实行对模型的操作,选择视图呈现给用户. 简单理解:实现了ICon ...
- ThinkPHP 学习笔记 ( 二 ) 控制器 ( Controller )
/** * ThinkPHP version 3.1.3 * 部署方式:应用部署 * 文内的 http://localhost/ 由实际主机地址代替 */ 入口文件 index.php: <?p ...
- 前端MVC学习总结——AngularJS验证、过滤器
前端MVC学习总结--AngularJS验证.过滤器 目录 一.验证 二.过滤器 2.1.内置过滤器 2.1.1.在模板中使用过滤器 2.1.2.在脚本中调用过滤函数 2.2.自定义过滤器 三.指令( ...
- crawler4j 学习(二)
crawler4j 学习(二) 实现控制器类以制定抓取的种子(seed).中间数据存储的文件夹.并发线程的数目: public class Controller { public static voi ...
- 从零开始学习jQuery (二) 万能的选择器
本系列文章导航 从零开始学习jQuery (二) 万能的选择器 一.摘要 本章讲解jQuery最重要的选择器部分的知识. 有了jQuery的选择器我们几乎可以获取页面上任意的一个或一组对象, 可以明显 ...
- Spring Boot学习记录(二)--thymeleaf模板 - CSDN博客
==他的博客应该不错,没有细看 Spring Boot学习记录(二)--thymeleaf模板 - CSDN博客 http://blog.csdn.net/u012706811/article/det ...
- [转]ASP.NET MVC学习系列(二)-WebAPI请求 传参
[转]ASP.NET MVC学习系列(二)-WebAPI请求 传参 本文转自:http://www.cnblogs.com/babycool/p/3922738.html ASP.NET MVC学习系 ...
- 小波学习之二(单层一维离散小波变换DWT的Mallat算法C++实现优化)--转载
小波学习之二(单层一维离散小波变换DWT的Mallat算法C++实现优化) 在上回<小波学习之一>中,已经详细介绍了Mallat算法C++实现,效果还可以,但也存在一些问题,比如,代码 ...
- Docker学习(二): 镜像的使用与构建
特别声明: 博文主要是学习过程中的知识整理,以便之后的查阅回顾.部分内容来源于网络(如有摘录未标注请指出).内容如有差错,也欢迎指正! =============系列文章============= 1 ...
随机推荐
- 黑盒测试用例设计方法&理论联系实际-> 功能图法
一. 概念 功能图由状态迁移图和布尔函数组成.状态迁移图用状态和迁移来描述.一个状态指出数据输入的位置(或时间),而迁移则指明状态的改变.同时要依靠判定表或因果图表示的逻辑功能.例,一个简化的自动出纳 ...
- python .whl文件与.egg文件用法
都是python 的包,可以用来安装的 __.whl__文件是一个python的包,对应的安装方式是: pip install xx.whl __.egg__文件也是一个python的包,对应的安装方 ...
- Datatable转成Json方式两则
1, Asp.net C# 使用Newtonsoft.Json 实现DataTable转Json格式数据 1.这里下载:http://www.newtonsoft.com/products/json/ ...
- Serv-U搭建FTP服务器
1.打开软件,勾选start automatically 2.点击domain,新建domain 3.依次输入IP.端口号.域名.域名类型 完成后的样子 4.右键单击Users,新建用户.依次输入用户 ...
- MATLAB绘图与图形处理
参考:http://www.cnblogs.com/djcsch2001/tag/MATLAB/ matlab部分写的不错! 7.2 三维图形 7.2.1 三维曲线.面填色命令 命令1 com ...
- UMA - Unity Multipurpose Avatar
UMA - Unity Multipurpose Avatar UMA version 1.0.1.0R Unity 4.3 What is UMA? UMA - Unity Multipurpose ...
- 有关ftp批量传送文件或文件夹
以ftp 批量上传文件时 可以用 mput file1 file2 .. 但是这样没传送一个就会问是否传送下一个 ,那么可以使用prompt这个命令.这是个双向开关,执行一次是取消提示,在执行一次是打 ...
- tomcat memory leak
Struts + Hibernate做项目,重新部署项目会出现Memory Leak严重报错.虽然不影响使用,但还是有风险.经实验发现是Hibernate的session没有关闭.....粗心....
- OpenCV中的矩阵乘法运算
转载:http://blog.csdn.net/tangwei2014 OpenCV中矩阵乘法运算 1. Mat*Mat: 第一个矩阵的列数必须等于第二个矩阵的行数. [0, 1, 2, 3; ...
- jexus asp.net Linux Web Server
Jexus简介 Jexus web server for linux 是运行在Linux上的Web服务器.其安装和部署及其简单,直接支持Asp.net . 下载Jexus wget http://li ...