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>

时间: 2024-11-05 23:26:07

angualrjs学习总结二(作用域、控制器、过滤器)的相关文章

前端MVC学习总结——AngularJS验证、过滤器

前端MVC学习总结--AngularJS验证.过滤器 目录 一.验证 二.过滤器 2.1.内置过滤器 2.1.1.在模板中使用过滤器 2.1.2.在脚本中调用过滤函数 2.2.自定义过滤器 三.指令(directive) 3.1.支持AngularJS功能的指令 3.1.1.应用与模块(ng-app) 3.1.2.控制器(ng-Controller) 3.1.3.包含(ng-Include) 3.1.4.不绑定(ngNonBindable) 3.2.扩展表单元素的指令 3.2.1.ng-opti

ASP.NET MVC学习系列(二)-WebAPI请求

继续接着上文 ASP.NET MVC学习系列(一)-WebAPI初探 来看看对于一般前台页面发起的get和post请求,我们在Web API中要如何来处理. 这里我使用Jquery 来发起异步请求实现数据调用. 继续使用上一文章中的示例,添加一个index.html页面,添加对jquery的引用. 一.无参数Get请求 一般的get请求我们可以使用jquery提供的$.get() 或者$.ajax({type:"get"}) 来实现: 请求的后台Action方法仍为上篇文章中的GetU

《ASP.NET MVC 4 实战》学习笔记 4:控制器(上)

周末狂欢两天,这周工作任务又好多,几天没有学习... 一.控制器和动作: 从前面的内容我们可以看到控制器的动作基本有两个特点:(1)public修饰:(2)返回ActionResult. 但动作并非必须返回ActionResult,可以是void的或其他,如下面两例: 1 public class SimpleController:Controller 2 { 3 public void Index() 4 { 5 Response.Write("<h1>Hello World !&

Spring Batch学习笔记二

此系列博客皆为学习Spring Batch时的一些笔记: Spring Batch的架构 一个Batch Job是指一系列有序的Step的集合,它们作为预定义流程的一部分而被执行: Step代表一个自定义的工作单元,它是Job的主要构件块:每一个Step由三部分组成:ItemReader.ItemProcessor.ItemWriter:这三个部分将执行在每一条被处理的记录上,ItemReader读取每一条记录,然后传递给ItemProcessor处理,最后交给ItemWriter做持久化:It

angular学习笔记(二十八)-$http(6)-使用ngResource模块构建RESTful架构

ngResource模块是angular专门为RESTful架构而设计的一个模块,它提供了'$resource'模块,$resource模块是基于$http的一个封装.下面来看看它的详细用法 1.引入angular-resource.min.js文件 2.在模块中依赖ngResourece,在服务中注入$resource var HttpREST = angular.module('HttpREST',['ngResource']); HttpREST.factory('cardResource

C++的开源跨平台日志库glog学习研究(二)--宏的使用

上一篇从整个工程上简单分析了glog,请看C++的开源跨平台日志库glog学习研究(一),这一篇对glog的实现代码入手,比如在其源码中以宏的使用最为广泛,接下来就先对各种宏的使用做一简单分析. 1. 日志输出宏 这里我们以一条最简单的日至输出为例说明: LOG(WARNING) << "This is a warning message"; 这里LOG是一个宏,其定义如下(logging.h line 487): #define LOG(severity) COMPACT

[转]Spring Security学习总结二

原文链接: http://www.blogjava.net/redhatlinux/archive/2008/08/20/223148.html http://www.blogjava.net/redhatlinux/archive/2008/09/01/226010.html [总结-含源码]Spring Security学习总结二 Posted on 2008-09-01 10:08 tangtb 阅读(9518) 评论(12)  编辑  收藏 所属分类: Spring .Spring Se

从零开始学习jQuery (二) 万能的选择器

原文:从零开始学习jQuery (二) 万能的选择器 本系列文章导航 从零开始学习jQuery (一) 开天辟地入门篇 从零开始学习jQuery (二) 万能的选择器 从零开始学习jQuery (三) 管理jQuery包装集 从零开始学习jQuery (四) 使用jQuery操作元素的属性与样式 从零开始学习jQuery (五) 事件与事件对象 从零开始学习jQuery (六) jQuery中的Ajax 从零开始学习jQuery (七) jQuery动画-让页面动起来! 从零开始学习jQuery

Spring学习(二)——使用用Gradle构建一个简单的Spring MVC Web应用程序

1.新建一个Gradle工程(Project) 在新建工程窗口的左侧中选择 [Gradle],右侧保持默认选择,点击next,模块命名为VelocityDemo. 2.在该工程下新建一个 module,在弹出的窗口的左侧中选择 [Gradle],右侧勾选[Spring MVC],如下图所示: 并勾选[Application server],下方选择框中选择Tomcat7.0,如无该选项,则选中右边的 [ New... ] -- [ Tomcat Server ], 配置 Tomcat .配置好后