zoukankan      html  css  js  c++  java
  • node(6)angular介绍

    一、angular 的介绍

    AngularJS[1]  诞生于2009,由Misko Hevery 等人创建,后为Google所收购。是一款优秀的前端JS框架,已经被用于Google的多款产品当中。AngularJS有着诸多特性,最为核心的是:MVC、模块化、自动化双向数据绑定、语义化标签、依赖注入等等

    AngularJS 是一个 JavaScript框架。它是一个以 JavaScript 编写的框架它可通过 <script> 标签添加到HTML 页面

    AngularJS 通过 指令 directive扩展了 HTML,且通过 表达式{{}} 绑定数据到 HTML

    AngularJS 是以一个 JavaScript 文件形式发布的,可通过 script 标签添加到网页中。

    库和框架的区别

    类库 - 类库是一些函数的集合,它能帮助你写WEB应用。起主导作用的是你的代码,由你来决定何时使用类库。类库有:jQuery

    框架 - 框架是一种特殊的、已经实现了的WEB应用,你只需要对它填充具体的业务逻辑。这里框架是起主导作用的,由它来根据具体的应用逻辑来调用你的代码。框架有:knockoutsproutcore react vue

     下载angular.js文件

    http://cdn.code.baidu.com/ 百度静态资源库

    https://angularjs.org/ angular 官方网站 1.x版本的网站

    https://angular.io/    2.x  4.x 网站

    <!DOCTYPE html>
    <html lang="en" ng-app="app">
    <head>
        <meta charset="UTF-8" />
        <title></title>
        <script src="./js/angular.js"></script>
    </head>
    <body>
           <h1>{{5+6}}</h1>
         <script type="text/javascript">
           var app = angular.module("app",[]);
         </script>
    </body>
    </html>

    提示:angular当中有指令之说,ng-XX开头 ,ng代表的是angular的缩写;

              ②ng-app:这个指令一般是放在HTML标签这里,它暗示着整个静态页面是一个单页面应用;

              这个页面当中只能有一个ng-app指令ng-app = “app”,这个应用的名称

             ③var app = angular.module("app",[]);

          Angular.js文件对外暴露了一个angular的对象,这个对象有一个方法叫做module(“应用的名称”,[]

            数组当中第二个参数是数组,代表的是你这个应用的依赖;

         ④模板表达式:{{}},这里面可以写一些简单的数学运算。+ - * / 表达式 不能为变量、iffor这些不行

    <!DOCTYPE html>
    <html lang="en" ng-app="app">
    <head>
        <meta charset="UTF-8" />
        <title></title>
        <script src="./js/angular.js"></script>
    </head>
    <body>
           <h1>{{6+6+6}}</h1>
    
          <div ng-controller="Mainctr as mc">
                <h1>{{mc.name}}</h1>
                <button ng-click="mc.add()">Add</button>
                <h2>{{mc.age}}</h2>
                <button ng-click="mc.minus()">minus</button>
           </div>
         <script type="text/javascript">
           //angular对象打点module方法  应用的名称  数组暂时为空,它代表的含义是你这个应用需要的依赖的模块
           var app = angular.module("app",[]);
            //app对象打点使用controller函数:会创建一个控制器类 ,还有一个还有一个函数你可以认为初始化函数
           app.controller("Mainctr",[function () {
                 this.name = "小明";
                 this.age = 10;
                 //添加方法 加的方法
                 this.add = function  (argument) {
                     this.age+=10;
                 }
                //减的方法  
                 this.minus = function  (argument) {
                     this.age-=10;
                 }
           }])
    
         </script>
    </body>
    </html>

    提示:①返回的app对象它有一个方法叫做controller(“MainCtr”,[function(){

    }]);它相当于一个类

          ②如果你想实例化这个类的实例必须要用  ng-controller指令:全部的指令都是嵌套在标签之中

          ③实例对象的时候 MainCtr as mc

          ④ng-click = “”;需要添加引号

    总结:刚才全部的操作,你会发现,咱么根本就没有操作dom,你会发现数据发生变化,视图跟着发生变化

    数据发生变化-视图发生变化

    <h1>{{1+2}}</h1>
         <div ng-controller="Mainctr as mainctr">
              <button ng-click="mainctr.add()">add</button>
              <span>{{mainctr.a}}</span>
              <button ng-click="mainctr.minus()">minus</button>
              <div class="box" ng-style={'width':mainctr.a+"px"}>
              </div>
              <span ng-style={"font-size":mainctr.a+"px"}>123</span>
         </div>
        <script type="text/javascript">
            var app = angular.module("app",[]);
            //声明一个控制器的一个类
            app.controller("Mainctr",[function  (argument) {
                  this.a = 10;
                  //添加ADD方法
                  this.add = function  (argument) {
                       this.a +=10;
                  }
                  //添加一个减的方法
                  this.minus = function  (argument) {
                      this.a-=10;
                  }
            }])
        </script>

    提示:玩的是‘数据’。ng-style可以设置样式,但是需要注意的是value是一个JSON

    数据的双向绑定

    <div ng-controller="MainCtr as mainctr">
              <h4>{{mainctr.a}}</h4>
              <!-- 数据的双向绑定 -->
              <input type="text" ng-model="mainctr.a">
              <!-- 是否购买保险 -->
              <p>
                 是否买保险:<input type="checkbox" ng-model="mainctr.b">
                 {{mainctr.b?"买保险":"滚蛋"}}
              </p>
              <!-- 性别 -->
              <p>
                <input type="radio" value="男" ng-model="mainctr.sex"><input type="radio" value="女" ng-model="mainctr.sex"><input type="radio" value="未知" ng-model="mainctr.sex">未知
                <span>{{mainctr.sex}}</span>
              </p>
              <!-- range条 -->
              <p>
               <input type="range" min="0"  max="255" ng-model="mainctr.range"/>
    {{mainctr.range}}
              </p>
        </div>
        <script type="text/javascript">
            var app = angular.module("app",[]);
            app.controller("MainCtr",[function  (argument) {
                     this.a =123;
                     this.b = true;
                     this.sex = "未知";
                     this.range = 20;
            }]);
        </script>

    提示:数据的双向绑定是通过ng-model进行数据的双向的绑定;

    调色板

    <!DOCTYPE html>
    <html lang="en" ng-app="app">
    <head>
        <meta charset="UTF-8" />
        <title></title>
        <script src="./js/angular.js"></script>
        <style type="text/css">
            .box{
                 position: relative;
                 width: 200px;
                 height: 200px;
                 background:pink;
            }
        </style>
    </head>
    <body>
        <div ng-controller="MainCtr as mainctr">
            <div class="box" ng-style="mainctr.getRGBA()">
    
           </div>
            <p>
               <input type="range" min="0" max="255" ng-model="mainctr.R">
               <span>{{mainctr.R}}</span>
           </p>
            <p>
               <input type="range" min="0" max="255" ng-model="mainctr.G">
               <span>{{mainctr.G}}</span>
           </p>
            <p>
               <input type="range" min="0" max="255" ng-model="mainctr.B">
               <span>{{mainctr.B}}</span>
           </p>
            <p>
               <input type="range" min="0" max="255" ng-model="mainctr.A">
               <span>{{mainctr.A}}</span>
           </p>
        </div>
        <script type="text/javascript">
            var app = angular.module("app",[]);
            app.controller("MainCtr",[function  (argument) {
                    //双向绑定的数据RGBA
                    this.R = 0;
                    this.G = 0;
                    this.B = 0;
                    this.A = 0.5;
    
                    //添加一个RGBA的方法
                    this.getRGBA = function  (argument) {
                        return {"background":"rgba("+this.R+','+this.G+','+this.B+','+this.A+")"}
                    }
            }]);
        </script>
    </body>
    </html>

    微博的发布框

    <!DOCTYPE html>
    <html lang="en" ng-app="app">
    <head>
        <meta charset="UTF-8" />
        <title></title>
        <script src="./js/angular.js"></script>
        <style type="text/css">
            .waring{
                 color:red;
            }
        </style>
    </head>
    <body>
          <div ng-controller="MainCtr as mainctr">
              <textarea rows="20" cols="20" ng-model="mainctr.content">
    
              </textarea>
              <p><span ng-class="{'waring':mainctr.content.length>=140}">{{mainctr.content.length}}</span>/140个字
               <button ng-disabled="mainctr.content.length>=140">发布</button>
             <button ng-disabled="mainctr.content.length==0" ng-click="mainctr.clear()">清空</button>
              </p>
          </div>
          <script type="text/javascript">
            var app = angular.module("app",[]);
            app.controller("MainCtr",[function  (argument) {
                this.content = "";
                this.clear = function  (argument) {
                     this.content = "";
                }
            }]);
          </script>
    </body>
    </html>

    ng-repeat循环

    概述:在angular当中标签部分,可以用ng-repeat你可以认为是for循环;

    <!DOCTYPE html>
    <html lang="en" ng-app = "app">
    <head>
        <meta charset="UTF-8" />
        <title></title>
        <script src="./js/angular.js"></script>
    </head>
    <body>
         <div ng-controller="Mainctr as mainctr">
               <ul ng-repeat="item in mainctr.hobby">
                   <li>{{item.name}}</li>
               </ul>
         </div>
        <script type="text/javascript">
            var app = angular.module("app",[]);
    
            app.controller("Mainctr",[function  (argument) {
               this.hobby = [{"name":"小明"},{"name":"大明"},{"name":"老明"}];
            }]);
        </script>
    </body>
    </html>

    小小学生管理系统

    <!DOCTYPE html>
    <html lang="en" ng-app = "app">
    <head>
        <meta charset="UTF-8" />
        <title></title>
        <script src="./js/angular.js"></script>
        <style type="text/css">
    
          table,tr,td{
             border:1px solid black;
             border-collapse:collapse;
          }
          tr:nth-child(2n){
            color:purple;
          }
          .addStudent{
              position: fixed;
              top: 0;
              right: 10px;
          }
        </style>
    </head>
    <body>
         <div ng-controller="Mainctr as mainctr">
            <div>
             <table>
                <tr>
                      <td>学号</td>
                      <td>姓名</td>
                      <td>年龄</td>
                      <td>性别</td>
                      <td>删除</td>
                </tr>
                <tr ng-repeat="item in mainctr.students track by $index">
                    <!-- 学号 -->
                    <td>
                      <span ng-dblclick="item.isShow=true" ng-show="!item.isShow">{{item.id}}</span>
                      <input type="text" ng-show="item.isShow" ng-blur="item.isShow=false" ng-model="item.id">
                    </td>
                    <!-- 姓名 -->
                      <td>
                      <span ng-dblclick="item.ShowName=true" ng-show="!item.ShowName">{{item.name}}</span>
                      <input type="text" ng-show="item.ShowName" ng-blur="item.ShowName=false" ng-model="item.name">
                    </td>
                    <!-- 年龄 -->
                     <td>
                      <span ng-dblclick="item.ShowAge=true" ng-show="!item.ShowAge">{{item.age}}</span>
                      <input type="text" ng-show="item.ShowAge" ng-blur="item.ShowAge=false" ng-model="item.age">
                    </td>
                    <!-- 性别 -->
                     <td>
                      <span ng-dblclick="item.ShowSex=true" ng-show="!item.ShowSex">{{item.sex}}</span>
                      <input type="text" ng-show="item.ShowSex" ng-blur="item.ShowSex=false" ng-model="item.sex">
                    </td>
                    <td ng-click="mainctr.remove(item.id)">删除</td>
                </tr>
             </table>
            </div>
               <!-- 下面是添加学生的布局 -->
                <div class="addStudent">
                       <p>
                          学号:<input type="text" name="" ng-model ="mainctr.formData.id">
                       </p>
                        <p>
                          姓名:<input type="text" name="" ng-model ="mainctr.formData.name">
                       </p>
                       <p>
                          年龄:<input type="text" name="" ng-model ="mainctr.formData.age">
                       </p>
                        <p>
                          性别:<input type="text" name="" ng-model ="mainctr.formData.sex">
                       </p>
                       <p>
                          <button ng-click = "mainctr.addStudent()">添加学生</button>
                       </p>
               </div>
         </div>
        <script type="text/javascript">
            var app = angular.module("app",[]);
    
            app.controller("Mainctr",[function  (argument) {
                  this.students = [
                       {"id":0,"name":"贾成豪","age":18,"sex":""},
                       {"id":1,"name":"小青","age":38,"sex":""},
                       {"id":2,"name":"刘铭","age":28,"sex":""},
                       {"id":3,"name":"小猪","age":68,"sex":""}
                  ];
    
                  //数据的双向绑定
                  this.formData = {
                       "id":"",
                       "name":"",
                       "age":"",
                       "sex":""
                  }
                  //添加学生
                  this.addStudent = function  (argument) {
                     this.students.push(this.formData);
                  }
                  //删除的方法
                  this.remove = function  (id) {
                        var i = 0;
                       while(i<this.students.length){
    
                         if(this.students[i].id==id){
                           this.students.splice(i,1);
                         }
                         i++;
                     }
                  }
            }]);
        </script>
    </body>
    </html>
  • 相关阅读:
    备忘录模式(java)
    06
    观察者模式(java)
    迭代器模式(c++)
    06
    07
    2021.11.21(迭代器模式c++)
    2021.11.24(状态模式java)
    2021.11.22(hive安装)
    2021.11.23(MYSQL安装)
  • 原文地址:https://www.cnblogs.com/smivico/p/8214298.html
Copyright © 2011-2022 走看看