`
huangyongxing310
  • 浏览: 498732 次
  • 性别: Icon_minigender_1
  • 来自: 广州
文章分类
社区版块
存档分类
最新评论

AngularJS基础

阅读更多
AngularJS基础

AngularJS 是一个 JavaScript 框架。
AngularJS 通过 指令 扩展了 HTML,且通过 表达式 绑定数据到 HTML。


工作原理:
当HTML页面加载完成之后,运行AngularJS的解析代码,将HTML页面中的AngularJS相关的标签或字段进行解析,
解析后生成相应标签或字段要求的HTML内容,之后就生成了最终的HTML页面内容了,这些内容就可以在浏览器进
行显了。



AngularJS 指令
AngularJS 指令是以 ng 作为前缀的 HTML 属性。

ng-app 指令
指令初始化一个 AngularJS 应用程序。

ng-init 指令
ng-init 指令为 AngularJS 应用程序定义了 初始值。

ng-model 指令
ng-model 指令 绑定 HTML 元素 到应用程序数据。

ng-model 指令可以将输入域的值与 AngularJS 创建的变量绑定。
<div ng-app="myApp" ng-controller="myCtrl">
    名字: <input ng-model="name">
</div>

<script>
var app = angular.module('myApp', []);
app.controller('myCtrl', function($scope) {
    $scope.name = "John Doe";
});
</script>


双向绑定
<div ng-app="myApp" ng-controller="myCtrl">
    名字: <input ng-model="name">
    <h1>你输入了: {{name}}</h1>
</div>



ng-repeat 指令
ng-repeat 指令对于集合中(数组中)的每个项会 克隆一次 HTML 元素。



AngularJS 表达式
里面的内容为表达式指令,会被AngularJS解析器当成指令运行并得到结果。
AngularJS 表达式写在双大括号内:{{ expression }}。

AngularJS 数字
AngularJS 数字就像 JavaScript 数字
<div ng-app="" ng-init="quantity=1;cost=5">

AngularJS 字符串(在javaScript中"'"\""")都可以表示字符串的包围。
AngularJS 字符串就像 JavaScript 字符串:
<div ng-app="" ng-init="firstName='John';lastName='Doe'">

AngularJS 对象
AngularJS 对象就像 JavaScript 对象
<div ng-app="" ng-init="person={firstName:'John',lastName:'Doe'}">

AngularJS 数组
AngularJS 数组就像 JavaScript 数组
<div ng-app="" ng-init="points=[1,15,19,2,40]">


AngularJS 应用
ng-app指令定义了应用。(应用程序的作用范围)
ng-controller 定义了控制器。(控制器的作用范围)


AngularJS Scope(作用域)(就是HTML (视图)和JavaScript (控制器)中进行数据交换的对象)
Scope(作用域) 是应用在 HTML (视图) 和 JavaScript (控制器)之间的纽带。
Scope 是一个对象,有可用的方法和属性。
Scope 可应用在视图和控制器上。
Scope 作用范围就是控制器的作用域,但ng-app中有一个 $rootScope,它可以作用在 ng-app 指令包含的所有 HTML 元素中
视图中,你不需要添加 $scope 前缀, 只需要添加属性名即可,如: {{carname}}。


AngularJS 控制器(就是进行数据(model)和相关操作的处理)
AngularJS 控制器 控制 AngularJS 应用程序的数据。
AngularJS 控制器是常规的 JavaScript 对象。
ng-controller 指令定义了应用程序控制器。



AngularJS 过滤器
过滤器可以使用一个管道字符(|)添加到表达式和指令中。

AngularJS 过滤器:
过滤器 描述
currency 格式化数字为货币格式。
filter 从数组项中选择一个子集。
lowercase 格式化字符串为小写。
orderBy 根据某个表达式排列数组。
uppercase 格式化字符串为大写。

表达式中添加过滤器
<div ng-app="myApp" ng-controller="personCtrl">
<p>姓名为 {{ lastName | uppercase }}</p> //过滤器可以通过一个管道字符(|)和一个过滤器添加到表达式中。

向指令添加过滤器
<div ng-app="myApp" ng-controller="namesCtrl">
<ul>
  <li ng-repeat="x in names | orderBy:'country'"> //过滤器可以通过一个管道字符(|)和一个过滤器添加到指令中。
    {{ x.name + ', ' + x.country }}
  </li>
</ul>
<div>

过滤输入
<div ng-app="myApp" ng-controller="namesCtrl">
<p><input type="text" ng-model="test"></p>
<ul>
  <li ng-repeat="x in names | filter:test | orderBy:'country'">
  //输入过滤器可以通过一个管道字符(|)和一个过滤器添加到指令中,该过滤器后跟一个冒号和一个模型名称。
    {{ (x.name | uppercase) + ', ' + x.country }}
  </li>
</ul>
</div>




AngularJS 服务(Service)
AngularJS 中你可以创建自己的服务,或使用内建服务。
在 AngularJS 中,服务是一个函数或对象,可在你的 AngularJS 应用中使用。


内建服务:
$location 服务,它可以返回当前页面的 URL 地址。
var app = angular.module('myApp', []);
app.controller('customersCtrl', function($scope, $location) {
    $scope.myUrl = $location.absUrl();
});


$http 服务
var app = angular.module('myApp', []);
app.controller('myCtrl', function($scope, $http) {
    $http.get("welcome.htm").then(function (response) { //使用 $http 服务向服务器请求数据
        $scope.myWelcome = response.data;
    });
});


$timeout 服务
var app = angular.module('myApp', []);
app.controller('myCtrl', function($scope, $timeout) {
    $scope.myHeader = "Hello World!";
    $timeout(function () {    //两秒后显示信息
        $scope.myHeader = "How are you today?";
    }, 2000);
});


$interval 服务
var app = angular.module('myApp', []);
app.controller('myCtrl', function($scope, $interval) {
    $scope.theTime = new Date().toLocaleTimeString();
    $interval(function () {  //每两秒显示信息
        $scope.theTime = new Date().toLocaleTimeString();
    }, 1000);
});



创建自定义服务:
app.service('hexafy', function() {
    this.myFunc = function (x) {
        return x.toString(16); //自定义的的服务 hexafy 将一个数字转换为16进制数
    }
});


要使用访问自定义服务,需要在定义过滤器的时候独立添加:
app.controller('myCtrl', function($scope, hexafy) {
    $scope.hex = hexafy.myFunc(255); //自定义的的服务 hexafy 将一个数字转换为16进制数
});


过滤器中,使用自定义服务
app.filter('myFormat',['hexafy', function(hexafy) {  //在过滤器 myFormat 中使用服务 hexafy:
    return function(x) {
        return hexafy.myFunc(x);
    };
}]);

<ul>
<li ng-repeat="x in counts">{{x | myFormat}}</li> //在对象数组中获取值时你可以使用过滤器:
</ul>




AngularJS Select(选择框)
AngularJS 可以使用数组或对象创建一个下拉列表选项。
ng-option 指令来创建一个下拉列表,列表项通过对象和数组循环输出
<div ng-app="myApp" ng-controller="myCtrl">
<select ng-model="selectedName" ng-options="x for x in names"></select>
</div>

<script>
var app = angular.module('myApp', []);
app.controller('myCtrl', function($scope) {
    $scope.names = ["Google", "Runoob", "Taobao"];
});
</script>



ng-options 与 ng-repeat
ng-repeat 有局限性,选择的值是一个字符串
$scope.sites = [
    {site : "Google", url : "http://www.google.com"},
    {site : "Runoob", url : "http://www.runoob.com"},
    {site : "Taobao", url : "http://www.taobao.com"}
];

<select ng-model="selectedSite">
<option ng-repeat="x in sites" value="{{x.url}}">{{x.site}}</option></select>

<h1>你选择的是: {{selectedSite}}</h1>



使用 ng-options 指令,选择的值是一个对象
<select ng-model="selectedSite" ng-options="x.site for x in sites"></select>

<h1>你选择的是: {{selectedSite.site}}</h1>
<p>网址为: {{selectedSite.url}}</p>

数据源为对象
$scope.cars = {
car01 : {brand : "Ford", model : "Mustang", color : "red"},
car02 : {brand : "Fiat", model : "500", color : "white"},
car03 : {brand : "Volvo", model : "XC90", color : "black"}
};

<select ng-model="selectedSite" ng-options="x for (x, y) in sites"></select>
<h1>你选择的值是: {{selectedSite}}</h1>

$scope.cars = {
car01 : {brand : "Ford", model : "Mustang", color : "red"},
car02 : {brand : "Fiat", model : "500", color : "white"},
car03 : {brand : "Volvo", model : "XC90", color : "black"}
};

<select ng-model="selectedCar" ng-options="y.brand for (x, y) in cars"></select>


子对象(对象里) for 对象 in 对象数组(或对象)



AngularJS 表格
在表格中显示数据
<div ng-app="myApp" ng-controller="customersCtrl">
<table>
  <tr ng-repeat="x in names">
    <td>{{ x.Name }}</td>
    <td>{{ x.Country }}</td>
  </tr>
</table>
</div>


显示序号 ($index)
表格显示序号可以在 <td> 中添加 $index:
<table>
  <tr ng-repeat="x in names">
    <td>{{ $index + 1 }}</td>
    <td>{{ x.Name }}</td>
    <td>{{ x.Country }}</td>
  </tr>
</table>


使用 $even 和 $odd
<table>
<tr ng-repeat="x in names">
<td ng-if="$odd" style="background-color:#f1f1f1">{{ x.Name }}</td>
<td ng-if="$even">{{ x.Name }}</td>
<td ng-if="$odd" style="background-color:#f1f1f1">{{ x.Country }}</td>
<td ng-if="$even">{{ x.Country }}</td>
</tr>
</table>




AngularJS ng-if 指令
ng-if 指令用于在表达式为 false 时移除 HTML 元素。
如果 if 语句执行的结果为 true,会添加移除元素,并显示。
ng-if 指令不同于 ng-hide, ng-hide 隐藏元素,而 ng-if 是从 DOM 中移除元素。



AngularJS HTML DOM
ng-disabled 指令
ng-disabled 指令直接绑定应用程序数据到 HTML 的 disabled 属性。
<div ng-app="" ng-init="mySwitch=true">
	<p>
		<button ng-disabled="mySwitch">点我!</button>
	</p>
	<p>
		<input type="checkbox" ng-model="mySwitch">按钮
	</p>
	<p>
		{{ mySwitch }}
	</p>
</div>


ng-show 指令
ng-show 指令隐藏或显示一个 HTML 元素。
<div ng-app="">
	<p ng-show="true">我是可见的。</p>
	<p ng-show="false">我是不可见的。</p>
</div>


ng-hide 指令
ng-hide 指令用于隐藏或显示 HTML 元素。
<div ng-app="">
	<p ng-hide="true">我是不可见的。</p>
	<p ng-hide="false">我是可见的。</p>
</div>




AngularJS 事件
ng-click 指令
ng-click 指令定义了 AngularJS 点击事件。
<div ng-app="" ng-controller="myCtrl">
<button ng-click="count = count + 1">点我!</button>
<p>{{ count }}</p>
</div>




AngularJS 模块
模块定义了一个应用程序。
模块是应用程序中不同部分的容器。(模块是应用程序里的一部分)
模块是应用控制器的容器。
控制器通常属于一个模块。(一个模块可以包含多个控制器)

<div ng-app="myApp">...</div>
<script>
var app = angular.module("myApp", []);  //通过 AngularJS 的 angular.module 函数来创建模块
</script>




AngularJS添加指令

<div ng-app="myApp" runoob-directive></div>
<script>
var app = angular.module("myApp", []);
app.directive("runoobDirective", function() {
    return {                                  //返回的是一个对象
        template : "我在指令构造器中创建!"
    };
});
</script>




AngularJS API
API			描述
angular.lowercase()	转换字符串为小写
angular.uppercase()	转换字符串为大写
angular.isString()	判断给定的对象是否为字符串,如果是返回 true。
angular.isNumber()	判断给定的对象是否为数字,如果是返回 true。




AngularJS 包含(ng-include)
<body>
	<div class="container">
		<div ng-include="'myUsers_List.htm'"></div>
		<div ng-include="'myUsers_Form.htm'"></div>
	</div>
</body>




AngularJS 依赖注入(就是服务的注入)
value注入
Value 是一个简单的 javascript 对象,用于向控制器传递值(配置阶段)。
var mainApp = angular.module("mainApp", []);// 定义一个模块

mainApp.value("defaultInput", 5);// 创建 value 对象 "defaultInput" 并传递数据
...

mainApp.controller('CalcController', function($scope, CalcService, defaultInput) {// 将 "defaultInput" 注入到控制器
   $scope.number = defaultInput;
   $scope.result = CalcService.square($scope.number);
   $scope.square = function() {
      $scope.result = CalcService.square($scope.number);
   }
});



service注入
app.service('hexafy', function() {
    this.myFunc = function (x) {
        return x.toString(16);
    }
});



factory注入
factory 是一个函数用于返回值。在 service 和 controller 需要时创建。
// 定义一个模块
var mainApp = angular.module("mainApp", []);

// 创建 factory "MathService" 用于两数的乘积 provides a method multiply to return multiplication of two numbers
mainApp.factory('MathService', function() {
   var factory = {};
   factory.multiply = function(a, b) {
      return a * b
   }
   return factory;
});

// 在 service 中注入 factory "MathService"
mainApp.service('CalcService', function(MathService){
   this.square = function(a) {
      return MathService.multiply(a,a);
   }
});



provider注入
AngularJS 中通过 provider 创建一个 service、factory等(配置阶段)
Provider 中提供了一个 factory 方法 get(),它用于返回
value/service/factory。
// 定义一个模块
var mainApp = angular.module("mainApp", []);
...

// 使用 provider 创建 service 定义一个方法用于计算两数乘积
mainApp.config(function($provide) {
   $provide.provider('MathService', function() {
      this.$get = function() {
         var factory = {};
         factory.multiply = function(a, b) {
            return a * b;
         }
         return factory;
      };
   });
});



constant注入
constant(常量)用来在配置阶段传递数值,注意这个常量在配置阶段是不可用的。
mainApp.constant("configParam", "constant value");




AngularJS 路由
AngularJS 路由允许我们通过不同的 URL 访问不同的内容。
http://runoob.com/#/first
http://runoob.com/#/second
http://runoob.com/#/third
因为 # 号之后的内容在向服务端请求时会被浏览器忽略掉。所以我们就需要在客户端实现 # 号后面内容的功能实现。
AngularJS 路由 就通过 # + 标记 帮助我们区分不同的逻辑页面并将不同的页面绑定到对应的控制器上。

<html>
    <head>
    	<meta charset="utf-8">
        <title>AngularJS 路由实例 - 菜鸟教程</title>
    </head>
    <body ng-app='routingDemoApp'>

        <h2>AngularJS 路由应用</h2>
        <ul>
            <li><a href="#/">首页</a></li>
            <li><a href="#/computers">电脑</a></li>
            <li><a href="#/printers">打印机</a></li>
            <li><a href="#/blabla">其他</a></li>
        </ul>

        <div ng-view></div>  // ngView 显不路由HTML页面内容位置指令
        <script src="http://apps.bdimg.com/libs/angular.js/1.4.6/angular.min.js"></script>
        <script src="http://apps.bdimg.com/libs/angular-route/1.3.13/angular-route.js"></script>
        <script>
            angular.module('routingDemoApp',['ngRoute'])
            .config(['$routeProvider', function($routeProvider){ //config配置路由规则($routeProvider(路由规则))
                $routeProvider
                .when('/',{template:'这是首页页面'})        //路由设置对象
                .when('/computers',{template:'这是电脑分类页面'})
                .when('/printers',{template:'这是打印机页面'})
                .otherwise({redirectTo:'/'});
            }]);
        </script>
    </body>
</html>




AngularJS Bootstrap
手动启动 AngularJS



参考原文:http://www.runoob.com/angularjs
分享到:
评论

相关推荐

    ionic项目简介以及Angularjs 基础

    ### AngularJS 基础 AngularJS是一个由Google开发和维护的开源前端框架,用于构建动态的、富交互的Web应用。它最初由Misko Hevery和Adam Abrons于2009年开发,后来成为了Google的项目。AngularJS通过将应用逻辑绑定...

    angularJs基础(1)

    **AngularJS基础(1)** AngularJS,作为一个强大的前端JavaScript框架,由Google维护,是Web开发中的重要工具,尤其在构建动态单页应用程序(SPA)时。本篇将深入探讨AngularJS的基础概念,帮助初学者快速上手。 ...

    angularjs基础教程(经典)含node.js安装

    **AngularJS基础教程** AngularJS,作为一款由Google维护的前端JavaScript框架,是构建动态Web应用的利器。它提供了一套强大的数据绑定和依赖注入机制,使得开发者可以更专注于业务逻辑,而无需过多关注DOM操作。本...

    angularjs基础视频教程

    这是angularjs的基础视频教程,里面包含网盘链接和提取码

    angularJs基础(2-6)

    本教程将深入探讨AngularJS的基础知识,包括它的核心概念、指令、服务以及数据绑定等,帮助初学者理解并掌握这个框架。 一、AngularJS核心概念 1. **双括号数据绑定**:`{{ }}` 是AngularJS中最直观的特点,它实现...

    angular-course:AngularJS 基础课程资料

    AngularJS 基础 Web 开发课程 学分 基于的最终项目 特玛丽 AngularJS 简介 AngularJS 关键概念 App的基本配置 使用表单 使用 ngRoute 路由 档案结构 示例应用 访问 REST API 的服务 生产部署准备 安装 在开发环境中...

    AngularJs:AngularJs 基础

    AngularJs 基础 HTML 非常适合声明静态文档,但是当我们尝试使用它来声明 Web 应用程序中的动态视图时,它会动摇。 AngularJS 允许您为应用程序扩展 HTML 词汇。 由此产生的环境非常具有表现力、可读性和快速开发。

    rocket-fuel:用于学习AngularJS基础的项目

    火箭燃料用于学习AngularJS基础的项目帕特里克·斯塔尔普(Patrick Stalcup) ##目标使用AngularJS构建有意义的东西要记住git(至少对于个人项目而言) 发挥创意并为游戏设计一些东西##跑步签出专案确保您已安装...

    AngularJS入门教程04:双向绑定

    AngularJS Seed工程是一个基础的AngularJS项目模板,包含了必要的文件和目录结构,用于快速启动一个新的AngularJS项目。`app`目录通常是存放应用源代码的地方,包括控制器、服务、指令等。而`test`目录则用于存放...

    LearningAngularJSBasic:AngularJS基础课程的测试仓库

    **AngularJS基础课程详解** AngularJS,作为一款强大的前端JavaScript框架,由Google维护,主要用于构建动态Web应用。这个“LearningAngularJSBasic”测试仓库旨在帮助初学者深入理解AngularJS的基本概念和技术,...

    提高前端开发效率必备AngularJS(基础)共6页.pd

    以下是关于AngularJS基础的一些关键知识点: 1. **双括号数据绑定**:AngularJS的核心特性之一就是双向数据绑定,它使得视图和模型之间保持同步。在HTML元素中使用`{{ }}`双括号,可以直接显示或更新模型的数据。 ...

    AngularJS.in.Action.2015.7.pdf

    根据提供的文件信息,我们可以提取以下知识点: 1. **AngularJS介绍与应用:**从提供的文件内容来看,《AngularJS in Action》是一本专注于...对于想要了解AngularJS基础知识的读者,此书无疑是一个很好的学习资源。

    angularjs+nodejs例子

    1. **AngularJS基础知识**:AngularJS的核心特性包括数据绑定、依赖注入、指令、过滤器和服务。数据绑定使得视图与模型之间的同步变得简单;依赖注入帮助管理对象间的依赖关系;指令扩展了HTML,使其能够表达更多的...

    AngularJS_Up_and_Running

    ### AngularJS基础 从基础开始,AngularJS涉及到使用控制器(Controllers)来在视图(View)和模型(Model)之间传递数据。控制器是JavaScript函数,它们能够控制HTML视图的行为。当了解AngularJS的基本概念后,学习...

    AngularJS_in_Depth_v5_MEAP

    ### AngularJS深入解析 V5...本书特别适合那些已经掌握了AngularJS基础知识并希望进一步提高自己的技能水平的开发者。通过本书的学习,读者将能够更加自信地处理复杂的AngularJS项目,并解决开发过程中遇到的各种挑战。

    angularjs入门已经常用的小插件

    ### AngularJS基础知识 1. **双向数据绑定**:AngularJS的核心特性之一,允许模型(model)和视图(view)之间的数据自动同步。当模型发生变化时,视图会自动更新;反之亦然。 2. **指令**(Directives):AngularJS提供...

    angularjs+boorstrap视频教程

    #### 一、AngularJS基础概览 1. **AngularJS简介**: - **定义**:AngularJS是一种开源的JavaScript框架,由Google维护,用于简化Web应用的开发过程。 - **版本**:AngularJS通常指的是1.x版本,与后来的Angular ...

    Professional AngularJS 电子书

    - **AngularJS基础语法**:介绍AngularJS的基本语法结构,包括数据绑定、指令等。 - **项目搭建**:指导如何搭建一个AngularJS项目,包括环境配置、文件结构组织等内容。 - **简单应用示例**:通过一个或多个简单的...

    angularjsdemo

    4. **angular-demo**:这个文件可能是一个包含AngularJS基础示例的目录,用于演示如何初始化一个AngularJS应用,以及如何创建控制器、服务、指令等基本元素。 5. **新建文件夹**:这通常表示开发者可能在这里存放了...

Global site tag (gtag.js) - Google Analytics