1 angularJS的一些概念

AngularJS 通过新的属性和表达式扩展了 HTML。

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

Angular Js是一个Javascript框架,

AngularJS 可以构建一个单一页面应用程序(SPAs:Single Page Applications)。

注:我们建议把脚本放在 <body> 元素的底部。这会提高网页加载速度,因为 HTML 加载不受制于脚本加载。

各个 angular.js 版本下载: https://github.com/angular/angular.js/releases

2 angularJS的历史

AngularJS 是比较新的技术,版本 1.0 是在 2012 年发布的。

AngularJS 是由 Google 的员工 Miško Hevery 从 2009 年开始着手开发。

该项目目前已由 Google 正式支持,有一个全职的开发团队继续开发和维护这个库。

3 什么是angular

AngularJS 使得开发现代的单一页面应用程序(SPAs:Single Page Applications)变得更加容易。

  • AngularJS 把应用程序数据绑定到 HTML 元素。
  • AngularJS 可以克隆和重复 HTML 元素。
  • AngularJS 可以隐藏和显示 HTML 元素。
  • AngularJS 可以在 HTML 元素"背后"添加代码。
  • AngularJS 支持输入验证。

4 angularJS 配置

AngularJS 通过 ng-directives 扩展了 HTML。

AngularJS 表达式写在双大括号内:{{ expression }}

    ng-app 指令定义一个 AngularJS 应用程序。

    ng-model 指令把元素值(比如输入域的值)绑定到应用程序。

    ng-bind 指令把应用程序数据绑定到 HTML 视图。

<div ng-app="">
<p>名字 : <input type="text" ng-model="name"></p>
<h1>Hello {{name}}</h1> // 此处为angular表达式用双大括号包裹
</div>

注意: 需要引入angularjs插件库 通过javascrit的src属性引入

1.ng-app是一个特殊的指令,一个HTML文档只出现一次,如出现多次也只有第一个起作用;ng-app可以出现在html文档的任何一个元素上。

2.ng-app作用:告诉子元素指令是属于angularJs。

3.ng-app的值可以为空(练习),项目中一定要赋值,后面所说的模块。

      一个页面里创建多个 ng-app 手动加载即可:
var app1 = angular.module("app1", []); //自动加载
var app2 = angular.module("app2", []); //手动加载
// 页面加载完成后,再加载模块
angular.element(document).ready(function() {
//手动加载myApp2 ng-app
angular.bootstrap(document.getElementById("myApp2"), ['myApp2'])
})

5 angularJS 表达式

  AngularJS 表达式写在双大括号内:{{ expression }}

AngularJS 表达式把数据绑定到 HTML,这与 ng-bind 指令有异曲同工之妙。

AngularJS 将在表达式书写的位置"输出"数据。

    AngularJS 表达式 很像 JavaScript 表达式:它们可以包含文字、运算符和变量。

实例 {{ 5 + 5 }} 或 {{ firstName + " " + lastName }}

5.1   AngularJS 数字

<div ng-app="" ng-init="quantity=1;cost=5">

    <p>总价: {{ quantity * cost }}</p>

</div>

  5.2   AngularJS 字符串

<div ng-app="" ng-init="firstName='John';lastName='Doe'">

    <p>姓名: {{ firstName + " " + lastName }}</p>

</div>

 5.3  AngularJS 对象

<div ng-app="" ng-init="person={firstName:'John',lastName:'Doe'}">

     <p>姓为 {{ person.lastName }}</p>

</div>

 5.4  AngularJS 数组

<div ng-app="" ng-init="points=[1,15,19,2,40]">

    <p>第三个值为 {{ points[2] }}</p>

</div>

 使用 ng-bind 也可以实现同样的效果

<div ng-app="" ng-init="points=[1,15,19,2,40]"> 

   <p>第三个值为 <span ng-bind="points[2]"></span></p>

</div>

拓展:AngularJS 表达式 vs JavaScript 表达式

JavaScript 表达式与AngularJS 表达式一样可以包含字母,操作符,变量。

AngularJS 表达式可以写在 HTML 中。jascript表达式只能写在script标签中

AngularJS 表达式不支持条件判断,循环及异常。JavaScript 表达式支持if判断及for循环

AngularJS 表达式支持过滤器,JavaScript 表达式支持正则过滤

6 angularJS 应用

AngularJS 模块(Module) 定义了 AngularJS 应用。

AngularJS 控制器(Controller) 用于控制 AngularJS 应用。

     ng-app指令指明了应用, ng-controller 指明了控制器。

AngularJS 应用程序由 ng-app 定义。应用程序在 <div> 内运行。

     ng-controller="myCtrl" 属性是一个 AngularJS 指令。用于定义一个控制器。

     myCtrl 函数是一个 JavaScript 函数。

AngularJS 使用$scope 对象来调用控制器。

在 AngularJS 中, $scope 是一个应用对象(属于应用变量和函数)。

控制器的 $scope (相当于作用域、控制范围)用来保存AngularJS Model(模型)的对象。

控制器在作用域中创建了两个属性 (firstName 和 lastName)。

     ng-model 指令绑定输入域到控制器的属性(firstName 和 lastName)。

基本配置如下:

<div ng-app="myApp" ng-controller="myCtrl">   <!-- 此处myApp指向模块应用  ng-controller 指令来添加应用的。控制器model中可以有多个controller: -->

   名: <input type="text" ng-model="firstName"><br>
姓: <input type="text" ng-model="lastName"><br>
<br>
姓名: {{firstName + " " + lastName}} </div>
<script>
var app = angular.module('myApp', []); // 此处代码标明创建了一个模块,定义应用为app myApp指向视图层
                       // 在模块定义中 [] 参数用于定义模块的依赖关系。
                       // 中括号[]表示该模块没有依赖,如果有依赖的话会在中括号写上依赖的模块名字。
app.controller('myCtrl', function($scope) { // 给定义的模块绑定控制器 myCtrl
// $scope (相当于作用域、控制范围 )用来保存AngularJS Model(模型)的对象。
$scope.firstName= "John";
$scope.lastName= "Doe";
});
</script>

  拓展  关于 controller 中作用域的问题:

说明:  controller 中,如果局部 $scope 和全局 $rootScope 都存在,且有相同名字的变量,{{变量名}} 指局部变量而不是全局变量,作用域只有当前 controller;{{$root.变量名}} 是全局变量,在 ng-app="" 下任何一个 controller 中都能使用。如果没有 $scope, 只有 $rootScope,那么 {{变量名}} 和 {{$root.变量名}} 就没区别了。

<body ng-app="myApp">
<div ng-controller="myCtrl"> //输出结果
{{first}}<br> //ctrl局部first
{{$root.first}}<br> //全局first
{{second}}<br> //全局second
{{$root.second}}<br> //全局second
</div>
<br>
<br>
<div ng-controller="myCtrl2">
{{first}}<br> //全局first
{{$root.first}}<br> //全局first
{{second}}<br> //ctrl2局部second
{{$root.second}} //全局second
</div>
<script>
var app = angular.module('myApp', []);
app.controller('myCtrl', function ($scope,$rootScope) {
$scope.first = 'ctrl局部first';
$rootScope.first = '全局first';
});
app.controller('myCtrl2', function ($scope,$rootScope) {
$scope.second = 'ctrl2局部second';
$rootScope.second = '全局second';
});
</script>

7 angularJS 指令

AngularJS 通过被称为 指令 的新属性来扩展 HTML。

AngularJS 通过内置的指令来为应用添加功能。

AngularJS 允许你自定义指令。

AngularJS 指令是扩展的 HTML 属性,带有前缀 ng-。

ng-app 指令初始化一个 AngularJS 应用程序。ng-app 指令告诉 AngularJS,元素是 AngularJS 应用程序 的"所有者"。

ng-init 指令初始化应用程序数据。

ng-model 指令把元素值(比如输入域的值)绑定到应用程序。

angular js 初学的更多相关文章

  1. MVC、MVP、MVVM、Angular.js、Knockout.js、Backbone.js、React.js、Ember.js、Avalon.js、Vue.js 概念摘录

    注:文章内容都是摘录性文字,自己阅读的一些笔记,方便日后查看. MVC MVC(Model-View-Controller),M 是指业务模型,V 是指用户界面,C 则是控制器,使用 MVC 的目的是 ...

  2. angular.js:13920 Error: [$injector:unpr] Unknown provider: $scopeProvider <- $scope <- testServe

    angular.js:13920 Error: [$injector:unpr] Unknown provider: $scopeProvider <- $scope <- testSer ...

  3. (翻译)Angular.js为什么如此火呢?

    在本文中让我们来逐步发掘angular为什么如此火: Angular.js 是一个MV*(Model-View-Whatever,不管是MVC或者MVVM,统归MDV(model Drive View ...

  4. angular.js写法不规范导致错误

    以下写法:没有明确指定module和controller,写法不规范. 更改angular.js版本会出bug. <html ng-app> <head> <title& ...

  5. Angular.js实现折叠按钮的经典指令.

    var expanderModule=angular.module('expanderModule',[]) expanderModule.directive('expander',function( ...

  6. Angular.js通过bootstrap实现经典的表单提交

    <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <link rel= ...

  7. python , angular js 学习记录【1】

    1.日期格式化 Letter Date or Time Component Presentation Examples G Era designator Text AD y Year Year 199 ...

  8. Angular JS 学习之路由

    1.AngularJS路由允许我们通过不同的URL访问不同的内容:通过AngularJS可以实现多视图的单页WEB访问(SPA) 2.通常我们的URL形式为http://runoob.com/firs ...

  9. Angular JS 学习之Bootstrap

    1.要使用Bootstrap框架,必须在<head>中加入链接: <link rel="stylesheet" href="//maxcdn.boots ...

随机推荐

  1. CentOS 7 常用命令大全

    CentOS7 常用命令集合 这两天一直在对CentOS 7.2进行初体验,各种学习命令肿么用,不过其实大多和DOS是一样的,只是命令的表达上可能有点儿不一样,毕竟这些都不是一家出来的嘛~ 废话不多说 ...

  2. 《程序设计入门——C语言》翁恺老师 第二周编程练习记录

    1 逆序的三位数(5分) 题目内容: 逆序的三位数: 程序每次读入一个正三位数,然后输出逆序的数字.注意,当输入的数字含有结尾的0时,输出不应带有前导的0.比如输入700,输出应该是7. 提示:用%1 ...

  3. 什么样的类才算是一种可重用的组件,即JavaBean?

    每一个类实现了Bean的规范才可以由Spring来接管,那么Bean的规范是什么呢? 必须是个公有(public)类 有无参构造函数 用公共方法暴露内部成员属性(getter,setter) 实现这样 ...

  4. JS 打印实现部分打印

    function Print() { $.ligerDialog.confirm('确定要打印吗?', true, function (yes, value) { if (yes) { var old ...

  5. Spring _day01_下载、概述、监听器

    Spring:SE/EE开发的一站式框架. ​ .一站式框架:有EE开发的每一层解决方案. ​ . WEB层 :SpringMVC ​ . Service层 :Spring的Bean管理,Spring ...

  6. javeEE第一周

    1.我对javaEE这一门课的要求和想要达到的一个效果: 我对javaEE还是比较感兴趣的,大家也知道我是一个懂安全的PHPER,也有一些项目经验,我发现PHP做的web开发试用的场合主要是一些中小型 ...

  7. Java Script--------问题错误解决意外的终止输入Uncaught SyntaxError: Unexpected end of input解决办法

    错误信息: Uncaught SyntaxError: Unexpected end of input 错误原因: 一般是成对的符号只出现了单只,比如说“”,‘’,{},[]. 解决办法:检查符号是否 ...

  8. eclipse 中修改项目名称,启动tomct原项目找不到的问题

    eclipse 中修改项目名称,启动tomct原项目找不到的问题 1 在开发和练习中,经常会导入其他开源项目,修改项目名称,部署到tomcat 后,然后访问项目会找不到项目,可能是新项目名称和配置文件 ...

  9. java中的异常处理问题。

    异常处理--基本概念 当出现程序无法控制的外部环境问题(用户提供的文件不存在,文件内容损坏,网络不可用...)时,JAVA就会用异常对象来描述. java中用2种方法处理异常: 1.在发生异常的地方直 ...

  10. ionic2中使用datetime组件如何默认设置当前时间?

    HTML: <ion-item> <span item-left style="min-height: 27px;">存款日期/时间</span> ...