zoukankan      html  css  js  c++  java
  • Angular框架入门

    今天简单学习了AngularJS框架,在这里我想简单的总结一下我所了解的AngularJS和一些入门案例!

    首先,我们要知道什么是AngularJS?

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

    然后,AngularJS怎么用?为什么我们要使用AngularJS?

    AngularJS 是一个 JavaScript 框架。它可通过 <script> 标签添加到 HTML 页面,通过指令拓展了HTML

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

    我认为AngularJS 的优势在于减轻前端js代码量,增加js的复用 也可以通过学习AngularJS学习到更多的前端页面框架 而且最重要的是AngularJS具有四大特性 分别是:

    1.采用MVC设计模式

               说起MVC设计模式就不得不提一下设计模式这个关键词了,常见的设计模式有23+1种,这个+1就是指MVC了,其他的可以自行百度了解,学过软件工程的可能会了解的多一点,虽然很繁琐,但确实是很有用的东西。

                在angularJS中MVC分别代表模型(model),视图(view),控制器(controller)

                Model:模型,就是业务数据,前端项目中就是JS变量;

                View:业务数据向用户展示的地方,前端项目中就是HTML;

                Controller:负责业务数据的增删改查,前端项目中相当于函数。

    2.双向数据绑定

    数据绑定有两个方向,意识从Model到View,二是从View到Model。

    1.从Model到View,只要Model中数据发生改变,View中的数据会自动同步更新。许多方法都可以实现此种方向的绑定,例如:{{ }}、ngBind、ngIf、ngRepeat、ngShow、ngChecked,其他的指令没有手动尝试,如果大家有兴趣可以自己敲一敲尝试一下。

    2.从View到Model,这种方向的绑定实现方法只有一种,就是ngModel          

                      单行文本输入域,ngMode可以把value属性值绑定到Model变量

                      复选框,ngModel可以把true/false值绑定到Model变量

                      单选框,ngModel可以把当前选中的单选框的value值绑定到Model变量

                      下拉框,ngModel可以把当前选中的option的value值绑定到Model变量

    3.依赖注入

    学过spring的同学可能知道这个概念,对于angular JS来说如果需要那些对象可以在参数中直接写出来,然后就可以在函数的使用了,这些对象不需要你自己创建,它本身已经被angular创建好了,你就可以直接使用了。

                module.controller('控制器', function($scope, $interval){})

                 Angular中的ngController指令在实例化控制器对象时,会根据指定的形参名,创建出控制器所依赖的对象,并注入给控制器对象——依赖注入(Dependency Injection,DI)现象。

    注意:

              (1)Angular在创建控制器对象时,会根据形参列表中的每个形参的名称来创建依赖的对象,故控制器声明函数不能声明Angular无法识别的形参名——Angular只提供了这一种依赖注入方式——根据形参名来注入依赖的对象!

               (2)若项目JS文件使用了类似yuicompressor等压缩程序,默认会把函数的形参名精简为一个字母的形式,会导致Angular的依赖注入失败!解决办法:

    4.模块化开发

    顾名思义就是通过定义模块 把各个部分分开 采用了高内聚低耦合的原则 从而使代码的依赖降低

    我们应该如何使用AngularJS呢 

    首先我们需要导入所要用到的script 标签 使用方法和Jquery一样

    <script type="text/javascript" src="js/angular.min.js" ></script>

    接下来要认识几个比较常用的指令

    ng-model   可以将输入域的值与 AngularJS 创建的变量绑定。 与jsp中的name属性类似

    ng-app=myApp 用于告诉 AngularJS 应用当前这个元素是根元素。一般写在<body>标签中 一个HTML只有一个ng-app

    ng-controller 用于为你的应用添加控制器。一般写在<body>标签中

    ng-repeat 用于遍历循环 哪里需要用到就添加在对应的标签上 

    ng-init 初始化

    $scoper 作用域是当前页面

    表达式 页面 如果需要展示数据 需要用{{表达式或者变量}} 比如:

            <script>
                var app=angular.module('myApp',[])//  定义了一个模块   叫myApp
                // 定义控制器
                app.controller('mycontroller',function($scope){
                    $scope.add=function(){
                        return parseInt($scope.x)+parseInt($scope.y);
                    }
                });
            </script>
        </head>
        <body ng-app=myApp ng-controller="mycontroller">
            x:<input type="text" ng-model="x" />
            y:<input type="text" ng-model="y" />
            
            <br />
            运算结果:{{add()}}
        </body>

    结果:

    循环遍历

    <!DOCTYPE html>
    <html>
        <head>
            <meta charset="UTF-8">
            <title></title>
            <script type="text/javascript" src="js/angular.min.js" ></script>
            <script>
                var app = angular.module("myApp",[])
                app.controller("mycontroller",function($scope){
                    $scope.list = [
                    {name:"zhangsan",age:18,sex:"man"},
                    {name:"lisi",age:17,sex:"woman"},
                    {name:"wangwu",age:16,sex:"boy"}
                    ];
                })
            </script>
        </head>
        <body ng-app="myApp" ng-controller="mycontroller">
            <table>
                <tr>
                    <td>姓名</td>
                    <td>年龄</td>
                    <td>性别</td>
                </tr>
                <tr ng-repeat="p in list">
                    <td>{{p.name}}</td>
                    <td>{{p.age}}</td>
                    <td>{{p.sex}}</td>
                </tr>
            </table>
        </body>
    </html>

    结果:

    一些其他的补充

    $scope是angular.js内置对象

    $scope有请求数据 也有响应数据

     

    ng-init angular.js 中 只要页面一执行 页面加载首先执行的ng-init 中操作

     

    var app=angular.module('app',[]) // 定义了一个模块叫app 定义以后一定要在body 标签上声明使用的模块名称

     

    ng-click 鼠标点击事件

     

    <tr ng-repeat="q in list">

     

    $http 也是angular.js的内置对象 主要作用发送http 请求 并且是发送ajax

    $http.get 发送get请求

     

    $event 可以获取当前操作的事件是什么 复选框 ----》复选框哪个被勾选

  • 相关阅读:
    【Hadoop环境搭建】Centos6.8搭建hadoop伪分布模式
    【Java安装】Centos6.8 安装Java1.6
    【SVN】win7 搭建SVN服务器
    【KVM】Ubuntu14.04 安装KVM
    【VNC】Ubuntu14.04LTS下安装VNC View
    【虚拟化】支持IDE/SATA/SCSI
    【KVM安装】在Centos6.8中安装KVM
    【脚本】新增未扩展磁盘容量
    【SVN】自动定时更新
    【GIS】地球经纬度和米换算(转)
  • 原文地址:https://www.cnblogs.com/hank-hush/p/12051929.html
Copyright © 2011-2022 走看看