AngularJS 基础教程一:

  

一:了解AngularJS

  AngularJS是一款非常优秀的前端高级 JS 框架,由 Misko Hevery 等人创建 2009 年被 Google 收购,用于其多款产品 有一个全职的开发团队继续开发和维护这个库 有了这一类框架就可以轻松构建 SPA 应用程序 single page web application 通过指令扩展了 HTML,通过表达式绑定数据到 HTML。

二:AngularJS的优势

  1.更少的代码,实现更强劲的功能

  2.带领前端进入MVC时代

    (mvc模式:Model(模型)是应用程序的核心,指的是程序在数据库中存储数据。

          View(视图)是应用的界面,将数据库里的数据展现出来,展现给程序的使用者。

          Controller(控制器)处理用户的交互行为,程序使用者更改数据,由控制器接受并发送给模型。)

三:AngularJS的特性

  1.MVC

  2.模块化

  3.自动化双向数据绑定 使用{{ }}对动态数据绑定,绑定到元素的innerHTML

  4.指令系统 ng-

  5.表单验证

  6.HTML组件化

  7.Angular 在构建 增加、查询、修改、删除的页面应用时能发挥最大优势。CRUD

四:AngularJS语法特点

  1.Angular 最大程度的减少了页面上的 DOM 操作;

  2.让 JavaScript 中专注业务逻辑的代码;

  3.通过简单的指令结合页面结构与逻辑数据;

  4.通过自定义指令实现组件化编程;

  5.代码结构更合理;

  6.维护成本更低;

  7.Angular 解放了传统 JavaScript 中频繁的 DOM 操作

五:AngularJS的用法

  1.编写第一个Angular应用

  当网页加载完毕,AngularJS 自动开始执行; HTML 页面中 ng-xxx 的属性称之为指令(Directive); ng-app 指令告诉 AngularJS,<html> 元素是 AngularJS 应用程序管理的边界; {{ }} 双花括号里面的叫做数据绑定表达式,可以是任何有效的JavaScript值、变量或语句。而在页面上显示的是表达式计算后的结果值。 | 管道符号可以给表达式添加过滤器,如 | number:2, |currency

<html ng-app>
  <head></head>
  <body>
     {{"现在开始学习Angular"}}
  </body>
</html>

  2.Module.controller() 控制器 

    第二行代码创建了一个名为userCtrl的控制器,以及一个控制器函数 控制器函数接受一个名为$scope的参数

var app = angular.module(“myApp”, []); //myApp模块名 app是模块实例
app.controller(“userCtrl” ,function($scope){  //userCtrl是控制器的名字
	$scope.name= “赵敏”; //$scope用来保存数据,定义方法
});

  3.ng-指令用法

  (1)ng-model

    ng-model 指令把文本框的值绑定到变量 name 上; {{ name }} 表达式就是把应用程序变量 name 绑定到某个dom元素的innerHTML

    例: 请输入你的名字:<input type="text" id="username" ng-model="name"> 你的名字是: <span>{{name}}</span>

  (2)ng-bind指令

    ng-bind 指令将指定变量或表达式的值显示在元素的innerHTML 如果给定的变量或表达式修改了,指定元素的 innerHTML 也会修改。

  例: <input type="text" ng-model="text"> --将文本框的值绑定到text变量 你输入的值是:<span ng-bind="text"></span> --动态显示text变量的值

  (3)ng-init 指令

    初始化应用时创建一个变量,并给变量赋值 ng-init 执行给定的表达式 建议用controller代替

    例: <div ng-app="" ng-init="myText=‘Hello World!‘"> <h1>{{myText}}</h1>

  (4)ng-click指令

    Angular的点击事件处理器,给元素通过click事件绑定$scope对象的方法

    例: <input type="text" ng-model="text"> <button ng-click="show()">显示输入值</button>

        $scope.show = function(){ alert("您输入的内容是:" + $scope.text); }

  (5)ng-repeat 指令

  根据绑定数组成员的数量,复制被绑定的元素 在ng-repeat指令复制元素的过程中,还提供了几个专有变量:

   $index 返回当前对象或属性的下标

   $first 当前对象为集合中的第一个对象时返回true

   $last 当前对象为集合中的最后一个对象时返回true

   $middle 当前对象既不是集合中第一个对象又不是最后一个对象返回true

   $even 集合中的偶数编号返回true

   $odd 集合中的奇数编号返回true ng-repeat-startng-repeat-end 重复生成多个顶层元素

  (6)ng-class 指令

  给元素添加CSS类:不能直接添加类名,需通过以下三种方式添加:

  1. 直接绑定值为CSS类名的$scope对象属性

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <link href="../../css/bootstrap.css" rel="stylesheet">
    <style>
        .red {
            color: red;
        }
    </style>
</head>
<body ng-app="myApp">
<div ng-controller="listController">
    <span ng-class="red1">曹总</span>
</div>

<script src="../../script/angular.min.js"></script>
<script>
    var app = angular.module("myApp", []);
    app.controller("listController", function($scope) {
        $scope.red1=‘red‘;
    });
</script>
</body>
</html>

  2. 以字符串数组方式选择性添加CSS类 表达式 ? ‘style1’:‘style2’

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <style>
        .style1 {
            height: 200px;
            width: 200px;
            background: salmon;
        }

        .style2 {
            background: violet;
        }
    </style>
</head>
<body>
<div ng-app ng-init="data={style1:true,style2:false}">
    <!--ng-class指令会根据设置对象的情况决定是否添加某些class类名-->
    <div ng-class="{style1:data.style1,style2:data.style2}"></div>
    <!--<div ng-class="style1:true,style2:false"></div>-->
    <input type="button" value="变化颜色" ng-click="data.style2 = !data.style2">
</div>
<script src="../../script/angular.min.js"></script>
    <script>
        var data = {
            style1:true,
            style2:false
        }
    </script>
</body>
</html>

  3. 通过key/value对象的方式添加多个CSS类 ng-class=”{style1:true,style2:false}”o.startsWith(‘D’); indexOf() contains() ng-class-odd 绑定奇数行样式 ng-class-even 绑定偶数行样式。

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <link href="../../css/bootstrap.css" rel="stylesheet">
    <style>
        .red {
            color: red;
        }
        .green {
            color: greenyellow;
        }
    </style>
</head>
<body ng-app="myApp">
<div ng-controller="listController">
    <ul>
        <li ng-repeat = "item in datas" ng-class="{red:item.startsWith(‘张‘)">{{ item }}
        </li>
    </ul>
</div>

<script src="../../script/angular.min.js"></script>
<script>
    var app = angular.module("myApp", []);
    app.controller("listController", function($scope) {
        $scope.datas = ["张三","李四","王五","赵六","张"];
    });
</script>
</body>
</html>

   (7)ng-style 指令

    ng-style 指令为 HTML 元素添加 style 属性。 ng-style 属性值必须是对象,表达式返回的也是对象 对象由 CSS 属性和值注册,即 key:value 。

    ng-style=” {color: ‘white‘}”

    (8)ng-show/ng-hide指令

    ng-show 值为true或flase 显示或隐藏元素 ng-hide 值为true或flase 隐藏或显示元素

    (9)ng-if指令

    从DOM中添加和移除元素 ng-if=”true”时保留元素 ng-if=“false”时移除元素

  (10)ng-swich指令

    ng-switch-when =“” 值为指定value值的时候 显示元素

     ng-switch-default 没有匹配的value值时显示元素

  (11)ng-link/ng-src指令

    绑定元素的link或src地址 <img ng-src="{{item.url}}"> AngularJS 设置图片地址的指令:ng-src AngularJS 代码执行前不显示图片。

  (12)ng-include指令

    该指令从服务器获取一段HTML片段,编译并处理该片段中包含的任何angular指令,并添加到DOM元素中。

    <ng-include src=" ‘a.html‘ " ></ng-include>

    src: 指定要加载内容的URL src的值必须为表达式 onload: 指定一个在内容被加载时调用的表达式 autoscroll:指定内容在加载时是否滚动到这部分视图所在的区域

  (13)ng-cloak指令

    使用一个CSS样式隐藏内联绑定表达式,(在文档第一次加载会短暂可见)。 ng-cloak 指令用于在 AngularJS 应用在加载时防止 AngularJS 代码未加载完而出现的问题。 AngularJS 应用在加载时,文档可能会由于AngularJS 代码未加载完而出现显示 AngularJS 代码,进而会有闪烁的效果, ng-cloak 指令是为了防止该问题的发生。 该指令没有参数。

    <span ng-cloak>{{ 表达式 }}</span>

  4.Module.directive自定义指令

  指令是Angular最强大的特性,通过指令能扩展并增强HTML。 当内置指令无法满足需求时,可以创建自定义指令。 自定义指令是通过Module.directive方法创建的。 Module.directive() 方法接受两个参数,第一个是指令名,第二个是函数。 该函数用return语句返回另一个指令函数,使用该自定义指令,Angular就会调用这个函数。 指令函数接受三个参数,第一个scope,用于检查在视图中可用的数据。 第二个参数element是一个jqLite对象,jqLite是Angular提供一个剪裁版本的jQuery 第三个参数是attrs。

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <link href="../../css/bootstrap.css" rel="stylesheet">
    <script src="../../script/angular.min.js"></script>
    <script>
        var m= angular.module("my", [])
        m.controller("ctr1", function ($scope) {
            $scope.dayNames = [‘星期日‘, ‘星期一‘, ‘星期二‘, ‘星期三‘, ‘星期四‘, ‘星期五‘, ‘星期六‘];
            $scope.today = $scope.dayNames[new Date().getDay()];
            //getDay星期是从0开始的,星期日的下标是0
        });
        m.controller("ctr2", function ($scope) {
            $scope.dayNames = [‘星期日‘, ‘星期一‘, ‘星期二‘, ‘星期三‘, ‘星期四‘, ‘星期五‘, ‘星期六‘];
            $scope.tommorrow = $scope.dayNames[(new Date().getDay() + 1) % 7];
        });
        m.directive(‘highlight‘, function () {
            return function (scope,element,attrs) {
                if(scope.today == attrs[‘highlight‘]){
                    element.css("color",‘red‘);
                }else{
                    element.css("color",‘green‘)
                }
            }
        })
    </script>
</head>
<body ng-app="my">
<div class="container">
    <h2>今天是星期几?</h2>
    <p ng-controller="ctr1" highlight="星期二">今天是{{ today }}</p>
    <p ng-controller="ctr2" highlight="星期一">明天是{{ tommorrow }}</p>
</div>
</body>
</html>
时间: 2024-10-29 19:06:20

AngularJS 基础教程一:的相关文章

一起学Google Daydream VR开发,快速入门开发基础教程一:Android端开发环境配置一

原文因涉及翻墙信息,被强制删除,此文为补发! 准备工作 进入Google Daydream开发者官网,开启准备工作,官网地址:https://vr.google.com/daydream/developers/ -------------------------------------------------------------------------------------------------------------------- Google Daydream开发者网址: https

ATOM基础教程一ATOM配置(10)

简介 ATOM配置是指在file->config.cson文件下进行配置,配置文件是作用于全局的. ATOM提供了两种配置方式: 打开设置界面配置 直接在config.cson文件下编辑配置项 config.cson文件全局配置项如下: "*": //全局 core ://核心配置 disabledPackages:[ //被禁用的插件名列表 ] packagesWithKeymapsDisabled:[ //禁用带有按键绑定的插件列表 ] excludeVcsIgnoredPa

ATOM基础教程一sync-settings配置(11)

sync-settings简介 sync-settings是一款备份插件,可以备份ATOM的全局设置.插件.按键绑定(keymaps).界面样式.代码片段(snippets ). init script. sync-settings配置 配置项Access Token和Gist Id需要到github去申请生成 申请生成token和gist id Gist是github提供的一个可以记录代码片段的功能,可以将工作当中经常使用的代码或在github上浏览到的优秀代码保存在Gist. Access

ATOM基础教程一linter-php配置(12)

linter-php简介 linter-php是自动检查php语法错误的插件,使用起来非常方便. linter-php配置 进入linter-php的配置页面,需要指定php执行文件路径: 因为ATOM提供的php插件大多数都要配置php执行文件路径,因此建议可以将php执行文件写入系统环境变量: 或直接在配置项填写php执行文件路径(不建议):

ibatis入门教程一

这几天研究ibatis玩,参考一篇贴子进行安装配置:蓝雪森林 选择这个帖子来跟随配置是因为这个帖子看着比较干净,但是我仍旧在配置得过程中出现了好几个问题,所以我决定在这个帖子的基础上将更多细节加上,做一个傻瓜教程. 一.前期准备 虽然ibatis能处理多种数据库,不过初学者还是比较适应mysql,因此我选择mysql作为我的数据载体.另外我准备建的是一个普通的java 工程,并采用maven命令行来建立这个工程.所以在这之前,电脑上需要安装maven和mysql. 二.工程建立 ①使用maven

kettle系列教程一

 1.kettle介绍 kettle是一个ETL(Extract, Transform and Load抽取.转换.载入)工具,ETL工具在数据仓库项目使用非常频繁,kettle也可以应用在以下一些场景: 在不同应用或数据库之间整合数据 把数据库中的数据导出到文本文件 大批量数据装载入数据库 数据清洗 集成应用相关项目是个使用 kettle使用非常简单,通过图形界面设计实现做什么业务,无需写代码去实现,因此,kettle是以面向元数据来设计: kettle支持很多种输入和输出格式,包括文本文

Python基础教程之List对象 转

Python基础教程之List对象 时间:2014-01-19    来源:服务器之家    投稿:root 1.PyListObject对象typedef struct {    PyObject_VAR_HEAD    PyObject **ob_item;    Py_ssize_t allocated;} PyListObject; PyObject_VAR_HEAD中的obsize表示该list对象含有的元素个数, 而allocated表示该list对象占用的内存空间. ob_item

highcharts实例教程一:结合php与mysql生成折线图

Highcharts是一款纯javascript和html5编写的图表库,不仅几乎能兼容所有pc浏览器,而且对ios和android手机端的兼容 性也不错,它能够很简单便捷的在Web网站或Web应用中添加交互性的图表,Highcharts目前支持直线图.折线图.面积图.柱状图.饼图.散点图 等多达28种不同类型的图表,还支持3D立体图表的生成,可以满足你对Web图表的任何需求 !而且Highcharts对学习者.非商业机构是免费使用的. 案例场景:要求针对技术cto网站,直观地显示一周网站pv.

转: angularjs基础教程(~~较通俗)

Angularjs-基础教程(1) 很久没有写过东西了,感觉写东西都不知道从哪里开始了,现在还是先写点技术性的吧,angularjs--我兄弟把它叫成“俺哥啦js” 1.下载 官方网址:https://angularjs.org/ CDN:https://ajax.googleapis.com/ajax/libs/angularjs/1.3.0-beta.5/angular.min.js 2.简单介绍使用 1.ng-app   ~~~angularjs的渲染范围 决定了angularjs的作用域