AngularJS(二)

作用域

通常AngularJS中应用(App)是由若干个视图(View)组合成而成的,而视图(View)又都是HTML元素,并且HTML元素是可以互相嵌套的,另一方面视图都隶属于某个控制器(Controller),进而控制器之间也必然会产生嵌套关系。
每个控制器(Controller)又都对应一个模型(Model)也就是 scopeController scope便产生了作用域。

1.根作用域
一个AngularJS的应用(App)在启动时会自动创建一个根作用域$rootScope,这个根作用域在整个应用范围(ng-app所在标签以内)都是可以被访问到的。
2.子作用域
通过ng-controller指令可以创建一个子作用域,新建的作用域可以访问其父作用域的数据。

过滤器

在AngularJS中使用过滤器格式化展示数据,在“{{}}”中使用“|”来调用过滤器,使用“:”传递参数。

1.内置过滤器
1、currency将数值格式化为货币格式

<p>单价 = {{price| currency }}</p>

2、date日期格式化,年(y)、月(M)、日(d)、星期(EEEE/EEE)、时(H/h)、分(m)、秒(s)、毫秒(.sss),也可以组合到一起使用。

<li>{{now| date:"yyyy-MM-dd HH:mm:ss"}}<li> 

3、filter在给定数组中选择满足条件的一个子集,并返回一个新数组,其条件可以是一个字符串、对象、函数

    <li>{{['html', 'css', 'js']|filter:'s'}}</li>
    将返回['css','js']

4、json将Javascrip对象转成JSON字符串。

<li>{{[ {name: '小红', age: 16},
        {name: '小米', age: 10}
        ]|json}}</li>
//结果为[ { "name": "小红", "age": 16 }, { "name": "小米", "age": 10 } ]

5、limitTo取出字符串或数组的前(正数)几位或后(负数)几位

{{"1234567890" | limitTo :6}} // 从前面开始截取6位
{{"1234567890" | limitTo:-4}} // 从后面开始截取4位

6、lowercase将文本转换成小写格式

{{ "TANK is GOOD" | lowercase }}     
 // 结果:tank is good

7、uppercase将文本转换成大写格式

{{ "lower cap string" | uppercase }} 
// 结果:LOWER CAP STRING

8、number数字格式化,可控制小位位数

<li>{{num|number:2}}</li>

9、orderBy对数组进行排序,第2个参数可控制方向,默认为false,升序排列。

<li>{{['html', 'css', 'js']|orderBy: '':true}}</li>
//结果为["js","html","css"]  降序排列
<li>{{[{name: '小红', age: 16},
       {name: '小明', age: 16},
       {name: '小米', age: 10}
       ]|orderBy: 'age': false}}</li>
       //结果为[{"name":"小米","age":10},{"name":"小红","age":16},{"name":"小明","age":16}]

2.自定义过滤器
除了使用AngularJS内建过滤器外,还可以根业务需要自定义过滤器,通过模块对象实例提供的filter方法自定义过滤器。

<div ng-controller="demoController">
    {{content|capitalize}}
</div>
<script src="angular.min.js"></script>
<script>
    var app = angular.module('app',[]);
    app.controller("demoController",["$scope",function($scope){
    $scope.contemt = "my name is itcast";
    }]);
    //自定义过滤器
    app.filter("capitalize",function(){
        return function(input){
            return input[0].toUpperCase()+input.slice(1);
        }
    });
    //结果为My name is itcast
    </script>

依赖注入

AngularJS采用模块化的方式组织代码,将一些通用逻辑封装成一个对象或函数,实现最大程度的复用,这导致了使用者和被使用者之间存在依赖关系。
所谓依赖注入是指在运行时自动查找依赖关系,然后将查找到依赖传递给使用者的一种机制。
常见的AngularJS内置服务有 http location、 timeout rootScope等
1.推断式注入
没有明确声明依赖,AngularJS会将函数参数名称当成是依赖的名称。

app.controller('demoController',function($http,$rootScope){
    $http({
        url:'example.php',
        method:'get',
        params: { // get 参数
                    name: 'itcast',
                    sex: '男'
                },
    });
});

这种方式会带来一个问题,当代码经过压缩后函数的参数被压缩,这样便会造成依赖无法找到。
2.行内注入
数组形式明确声明依赖,数组元素都是包含依赖名称的字符串,数组最后一个元素是依赖注入的目标函数。推荐使用这种方式声明依赖

app.controller('demoController',['$http','rootScope',function($http,$rootScope){
    $http({
        url:'example.php',
        method:'POST',
        data:{}
    });
}]);
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值