前  言

        

 Android应用开发中,有一些功能虽然能够使用原生JS来实现,但是会比较的复杂,因此一些相应的框架应运而生了。框架相对于原生JS而言,从主观上来说,最大的改变就是代码大幅度的减少了。在使用上,也比较方便易懂。因此,框架一经诞生就广受欢迎。

 在本章,就将详细介绍其中一种框架的使用----Angular JS。

AngularJS 通过 指令 扩展了 HTML,且通过 表达式 绑定数据到 HTML。
 angularJS表达式
    1、angularJS使用双大括号{{}}绑定表达式;用于将表达式的内容输出到页面中。
       表达式中可以是文字、运算符、变量等,也可以在表达式中进行运算输出结果。
       eg:<p>{{5+5+"angular"}}</p> //可以直接使用---10angular
   
     如果angular.js 文件放在页面的下方在页面刷新的瞬间会看到{{}}表达式的原样。
     所以使用ng-bind指令代替表达式
     eg:<p ng-bind="5+5+'angular'"></p>  //可以直接使用
 
 angularJS的常用指令
    AngularJS 指令是扩展的 HTML 属性,带有前缀 ng-。
      1、ng-app:声明angularJS所管辖的区域。一般写在body或HTML标签上,原则上一个页面中只写一个
         eg:<body ng-app=""></body  >
      2、ng-model 指令把元素值(比如输入域的值)绑定到应用程序的变量中。
         eg: <input type="text" ng-model = "name" />
       使用:<div ng-bind = "name + '123'"></div>
        <div >{{name + "hahahha"}}</div>
      3、ng-bind:把应用程序中的变量中的值,输出到页面HTML视图中,可以与表达式{{}}互相替换
       eg:<div ng-bind = "name"></div> -----<div>{{name}}</div>
      4、ng-init:初始化angularJS应用程序中的变量值:
         eg:<body ng-init = "name = 'jredu'"></body  >
        应用程序初始化时,name变量就赋有初值  实现对输入框的实时监控 原生JS

<body ng-app=""    ng-init = "name = 'jredu'">
        <!--原生JS绑定input与div-->
        <input type="text" name="" id="input" value="" />
        <div id="div"></div>

    <script type="text/javascript">
        //原生JS绑定input与div
        var inputs= document.getElementById("input");
        var div = document.getElementById("div");
        inputs.onchange = function(){
            div.innerHTML = inputs.value;
        }
    </script>
    </body  >

效果如下: Angular JS

<body ng-app=""    ng-init = "name = 'jredu'">
        <!--Angular绑定input与div-->
        <input type="text" ng-model = "name" />
        <div ng-bind = "name + '123'"></div>

    <script src="JS/angular.js" type="text/javascript" charset="utf-8"></script>
</body>

效果图如下:

比较:

通过上述的两个例题,相信大家都能够非常直观的了解到两者之间的差异。

原生JS通过对DOM的操作来实现对输入内容的监听,相对而言比较麻烦,并且在读取内容时,也有一些小小的bug,下面的div在读取输入框内容时,鼠标必须在输入框外再点击一下时,div才会读取输入框里面的内容。

但是,在使用angular JS时,div时实时的读取输入框里面的内容的。这样就比较的方便,而且,这也是用户想要的结果。

另外,对编程员来说,代码也不是少了一点半点,我想,这是所有程序员的福音吧!!!

1. Angular JS中的过滤器
1.1  基础介绍

过滤器可以通过一个管道字符(|)和一个过滤器添加到指令中。
   1、系统内置的过滤器
        currency 将数字格式化为货币格式
        filter            从数组项中选择一个子集。//后接的变量名不加引号
        orderBy  根据某个表达式排列数组。//后接的变量名加引号     顺序
       lowercase 格式化字符串为小写。
       uppercase 格式化字符串为大写。
    自定义过滤器的使用:
      1、ng-repeat指令
         <tr ng-repeat="item in classes | orderBy:'score'|filter:search|filterByName:name|filterByScore:scores">
       
      2、<p >{{表达式 | 过滤器名称}}</p>

<p>{{123456|currency}}</p>
<p>{{"aBcdEf"|lowercase}}</p>
<p>{{"aBcdEf"|uppercase}}</p>

效果图如下:

1.2ng-repeat命令

ng-repeat命令相当于for循环,一般用于表格中,可以将目标中的数据循环遍历进表格中,使用起来非常的方便。
案例:

//将数组中的值遍历进表各中<tr ng-repeat="item in classes “>
                <td>{{item.name}}</td>
                <td>{{item.age}}</td>
                <td>{{item.score}}</td>
</tr>

效果图如下:

同时,也可以使用orderBy  指令将数组中的值进行排序,例如按照年龄排序,按照成绩排序,代码如下

<tr ng-repeat="item in classes |  orderBy  :‘score’“>
但是,值得注意的是,orderBy  指令进行的排序都是升序,如果想要降序排列,就得自己重新编写代码。这就牵扯到自定义过滤器了。

下面,我们就一起来了解下。

1.3通过实例来了解自定义过滤器的使用方法

实例:

<body ng-app="app"ng-controller="ctrl">

        <p>{{123456|currency}}</p>
        <p>{{"aBcdEf"|lowercase}}</p>
        <p>{{"aBcdEf"|uppercase}}</p>

        请输入查询关键字:<input type="text"ng-model="search" />
        <br/>
        请输入姓名查询:<input type="text"ng-model="name" /><br/>
        请输入成绩查询:<input type="text"ng-model="scores" />
        <table width="400px"border="1">
            <tr>
                <th>姓名</th>
                <th>年龄</th>
                <th>成绩</th>
            </tr>
            <tr ng-repeat="item in classes | orderBy:'score'|filter:search|filterByName:name|filterByScore:scores">
                <td>{{item.name}}</td>
                <td>{{item.age}}</td>
                <td>{{item.score}}</td>
            </tr>
        </table>

        <h1>自定义过滤器</h1>
        <p>{{"我显示不出来啦啦!"|showHello}}</p>
        <p>{{"我显示不出来啦啦!"|reverse}}</p>
        <p>{{12345678901|hideTel:5}}</p>

    </body>
    <script src="JS/angular.js" type="text/javascript" charset="utf-8"></script>
    <script type="text/javascript">
          angular.module("app",[])
        .controller("ctrl",function($scope){
            $scope.classes = [
                {name:"张三",age:"18",score:90},
                {name:"子麻",age:"18",score:91},
                {name:"麻子",age:"18",score:19},
                {name:"六子",age:"18",score:95},
                {name:"换个影子",age:"18",score:93},
            ]
        })
      /*
             自定义实现根据姓名筛选数据的功能
             实例:
                请输入查询姓名:<input type="text"ng-model="name" />
                <tr ng-repeat="item in classes |filterByName:name">

         * */
        .filter("filterByName",function(){
            return function(item,search){//classes数组   、   input里的内容
                if(!search){
                    return item;
                }
                var arr = [];
                for(var i=0; i<item.length; i++){
                    var index = item[i].name.indexOf(search);
                    if (index >-1) {
                        arr.push(item[i]);
                    }
                }
                return arr;
            }
        })
        /*
          自定义实现根据成绩筛选数据的功能
         注意:成绩是number数据类型,不能使用indexOf()方法,要将其转为字符串 

         * */
        .filter("filterByScore",function(){
            return function(item,search){
                var arr =[];
                if(!search) return item;
                for(var i=0; i<item.length; i++){
                    item[i].score +="";//item[i].score是number数据类型,↓不能使用indexOf()方法,故将其转为字符串
                    var index = item[i].score.indexOf(search);
                    if(index>-1){
                        search == item[i].score;
                        arr.push(item[i]);
                    }
                }
                return arr;
            }
        })
    </script>

效果图如下:

Angular JS 基础应用--第一篇的更多相关文章

  1. 【MM系列】SAP MM模块-基础配置第一篇

    公众号:SAP Technical 本文作者:matinal 原文出处:http://www.cnblogs.com/SAPmatinal/ 原文链接:[MM系列]SAP MM模块-基础配置第一篇   ...

  2. angular.js学习的第一天

    第一天对angular.js进行学习,肯定是面对的入门的最简单的实例: 实现下面的这个效果,首先需要在html页面引入angular.js,在下面的div中,ng-app则表示在当前div是一个ang ...

  3. Android基础学习第一篇—Project目录结构

    写在前面的话: 1. 最近在自学Android,也是边看书边写一些Demo,由于知识点越来越多,脑子越来越记不清楚,所以打算写成读书笔记,供以后查看,也算是把自己学到所理解的东西写出来,献丑,如有不对 ...

  4. 二、JavaScript语言--JS基础--JavaScript进阶篇--事件响应

    1.什么是事件 JavaScript 创建动态页面.事件是可以被 JavaScript 侦测到的行为. 网页中的每个元素都可以产生某些可以触发 JavaScript 函数或程序的事件. 比如说,当用户 ...

  5. 二、JavaScript语言--JS基础--JavaScript入门篇

    1.如何插入JS 使用<script>标签在HTML网页中插入JavaScript代码.注意, <script>标签要成对出现,并把JavaScript代码写在<scri ...

  6. angular.js基础

    内置指令 所有的内置指令的前缀都为ng,不建议自定义指令使用该前缀,以免冲突.首先从一些常见的内置指令开始.先列出一些关键的内置指令,顺便简单说说作用域的问题. ng-model 将表单控件和当前作用 ...

  7. 二、JavaScript语言--JS基础--JavaScript进阶篇--选项卡切换效果

    利用JavaScript知识,实现选项卡切换的效果. 效果图: 文字素材: 房产: 275万购昌平邻铁三居 总价20万买一居     200万内购五环三居 140万安家东三环     北京首现零首付楼 ...

  8. 二、JavaScript语言--JS基础--JavaScript进阶篇--DOM对象 控制HTML元素

    1.认识DOM 文档对象模型DOM(Document Object Model)定义访问和处理HTML文档的标准方法.DOM 将HTML文档呈现为带有元素.属性和文本的树结构(节点树). 先来看看下面 ...

  9. 二、JavaScript语言--JS基础--JavaScript进阶篇--浏览器对象

    1.window对象 window对象是BOM的核心,window对象指当前的浏览器窗口. window对象方法:

随机推荐

  1. .NET入行之工作后

    成长这条路上,有一些事已经渐渐的消失模糊的脑海里,而有一些事,则历历在目,终生铭记. 一切都是从大二下学期快结束的那段培训课程开始的,从此也算是入门了,这也是一条不归路. 在.NET入行之工作前一文中 ...

  2. 关于如何在highchart上获取后台返回的值一些问题。

    项目开发过程中有用到highchart图表进行项目的开发.一个比较常规的需求就是通过点击图表上的模块进行明细的查看. 1.比如坐标一月.二月.三月.四月.....有对应的值01,02,03,04... ...

  3. 7.11.3 Java简介

    101Java简介 101Java简介及开发环境搭建 Java简介 编程语言简介 机器语言:纯粹的机器代码 机器语言是有0,1,0,1的二进制代码组成,可以有计算机直接执行.效率最高,但是通用性不强, ...

  4. 一起来学Go --- (go的枚举以及数据类型)

    枚举 枚举指一系列的相关的常量,比如下面关于一个星期的中每天的定义,通过上篇博文,我们可以用在const后跟一对圆括号的方式定义一组常量,这种定义法在go语言中通常用于定义枚举值.go语言并不支持众多 ...

  5. django文件上传

    -------------------上传图片-------------------1.model中定义属性类型为models.ImageField类型 pic=models.ImageField(u ...

  6. 总结各种排序算法【Java实现】

    一.插入类排序 1.直接插入排序 思想:将第i个插入到前i-1个中的适当位置 时间复杂度:T(n) = O(n²). 空间复杂度:S(n) = O(1). 稳定性:稳定排序. 如果碰见一个和插入元素相 ...

  7. MySQL(十一)之触发器

    上一篇介绍的是比较简单的视图,其实用起来是相对比较简单的,以后有什么更多的关于视图的用法,到时候在自己补充.接下来让我们一起了解一下触发器的使用! 一.触发器概述 1.1.什么是触发器 触发器(Tri ...

  8. spring配置datasource三种方式

    详见:http://blog.yemou.net/article/query/info/tytfjhfascvhzxcytp34 spring配置datasource三种方式 1.使用org.spri ...

  9. asp.net mvc 4 项目升级到 asp.net mvc5

    一.开始 1.打开或新建asp.net mvc 4项目 2.修改 global.asax文件 原: WebApiConfig.Register(GlobalConfiguration.Configur ...

  10. poj 3694双联通缩点+LCA

    题意:给你一个无向连通图,每次加一条边后,问图中桥的数目. 思路:先将图进行双联通缩点,则缩点后图的边就是桥,然后dfs记录节点深度,给出(u,v)使其节点深度先降到同一等级,然后同时降等级直到汇合到 ...