美文网首页
AngularJS学习笔记

AngularJS学习笔记

作者: margery | 来源:发表于2017-09-21 13:14 被阅读18次

1、什么是angularjs

  • AngularJS是一个框架(诸多类库的集合)以数据和逻辑做为驱动(核心)。
  • AngularJS有着诸多特性,最为核心的是:MVC、模块化、双向数据绑定、指令系统、依赖注入等。

2、为什么使用angular

先看一个例子

<input type="text" ng-model = "name"> <p>{{name}}</p>
<script type="text/javascript"> var myapp = angular.module('myapp',[]); <script> src="http://apps.bdimg.com/libs/angular.js/1.4.6/angular.min.js" charset="utf-8"></script>

当页面加载完毕后,AngularJS自动开始执行
HTML页面中,ng-xxx的属性称之为指令(Driective)
ng-app 告诉AngularJS该标签是ng的应用程序管理的边界
ng-model 指令把文本框的值value绑定到user.name上
{{user.name}} 表达式用来取出绑定在user.name上面的值,显示在页面

(2)angular语法

  • 定义一个应用
    <html lang="en" ng-app = "myapp">
  • 定义一个模块
    var myapp = angular.module('myapp',[]);

第一个参数是控制器的名称,第二个参数是执行时会执行的函数

  • 定义控制器
    myapp.controller('myCtrl',["$scope",function($scope){ }])

为应用中的模型设置初始状态,通过$scope(上下文模型)对象把数据模型或函数行为暴露给视图

  • 表达式
    {{}}

它们可以包含文字、运算符和变量
如 {{ 1 + 2 }} 或 {{ ‘hello ’+ ‘,world’}}

指令

ng-xxx

ng-bind 来实现模型(Model)数据向视图模板(View)的绑定
ng-init 初始化模型(Model)也就是$scope。
ng-click、ng-dblclick 点击事件/双击
ng-show/hide控制元素是否显示,true显示、false不显示
ng-repeat 重复 可以将数组或对象数据迭代到视图模板中
ng-class控制类名
ng-switch、on、ng-switch-when 可以对数据进行筛选。
自定义指令
app.directive('xxx',function(){})
restrict 定义指令的声明方式 'E'元素 'A' 属性
replace 如果指令作为标签,替换标签本身
transclude 如果标签内部有内容,如何替换
template/ templateUrl 模板 / 模板的url
$templateCache 缓存模板
link 通过link可以给dom元素绑定事件

作用域

  • 根作用域

整个应用范围(ng-app所在标签以内)都是可以被访问到的。

  • 子作用域

通过ng-controller指令可以创建一个子作用域,新建的作用域可以访问其父作用域的数据。
`
<div class="d2" ng-controller = 'myCtrl2'>
<p>{{name}}</p>

  <p>{{name1}}</p>
  <p>{{age}}</p>
  </div>
  <script type="text/javascript">
    var myapp = angular.module('myapp',[]);
    myapp.controller('myCtrl',function($scope){
      $scope.name = '张三';
    })
    myapp.controller('myCtrl2',function($scope){
      $scope.name1 = 'ls';
      $scope.age = 23;
    })
  </script>

`

过滤器

{{ | }}

| 来过滤

  • 内置过滤器
    1、currency将数值格式化为货币格式
    2、date日期格式化,'yyyy-MM-dd hh:mm:ss'
    3、filter 筛选 并返回一个新数组,其条件可以是一个字符串、对象、函数
    4、json将Javascrip对象转成JSON字符串。
    5、limitTo取出字符串或数组的前(正数)几位或后(负数)几位
    6、lowercase/uppercase将文本转换成小/大写格式
    7、number数字格式化,可控制小位位数
    8、orderBy对数组进行排序,第2个参数可控制方向
  • 自定义过滤器

通过模块对象实例提供的filter方法自定义过滤器。
`
<p>{{'你好'| bf}}</p>
<script type="text/javascript">
var myapp = angular.module('myapp',[]);
myapp.controller('myCtrl',function($scope){
myapp.filter('bf',function(){
return function(input){
return 'bf==>'+input;

      }
    })

`

服务

  • 内建服务
    1、$location是对原生Javascript中location对象属性和方法的封装。
    var myapp = angular.module('myapp',[]); myapp.controller('myCtrl',function($scope,$location){ $scope.absUrl = $location.absUrl(); $scope.protocol = $location.protocol(); $scope.port = $location.port(); $scope.path = $location.path(); $scope.hash = $location.hash(); $scope.search = $location.search(); })
    2、$timeout&$interval对原生Javascript中的setTimeout和setInterval进行了封装。
    myapp.controller('myCtrl',function($scope,$timeout,$interval){ var timer = $timeout(function(){ $scope.now = new Date(); },1000) var timer2 = $interval(function(){ $scope.current = new Date() },1000) }
    3、$log打印调试信息
    4、$http用于向服务端发起异步请求。
    var app = angular.module('myApp', []); app.controller('siteCtrl', function($scope, $http) { $http({ method: 'GET', url: '/someUrl' }).then(function successCallback(response) { // 请求成功执行代码 }, function errorCallback(response) { // 请求失败执行代码 });
    5、$filter在控制器中格式化数据。
    myapp.controller('myCtrl',function($scope,$filter){ var dateFilter = $filter('date'); $scope.date = dateFilter(now,'yyyy-MM-dd hh:mm:ss'); }
  • 自定义服务

service方法
myapp.controller('myCtrl',['$scope','$filter','showTime',function($scope,$filter,showTime){ $scope.now = showTime; }]) myapp.service('showTime',['$filter',function($filter){ var date = new Date(); this.date = $filter('date')(date,'yyyy-MM-dd'); }])
factory方法
myapp.controller('myCtrl',['$scope','$filter','showTime',function($scope,$filter,showTime){ $scope.now = showTime; }]) myapp.factory('showTime',function($filter){ var date = new Date(); var dateFilter = $filter('date'); date = dateFilter(date,'yyyy/MM/dd'); return date; })

配置块

  • 通过config方法实现对模块的配置,AngularJS中的服务大部分都对应一个“provider”,用来执行与对应服务相同的功能或对其进行配置。
    比如$http==>$httpProvider、$location==>$locationPorvider

运行块

  • 可以直接运行相应的服务模块,AngularJS提供了run方法来实现。

路由

  • 引入路由
    <script src="lib/angular-route.js" charset="utf-8"></script>
  • 实例化模块时,依赖注入ngRoute
    var app = angular.module('app',['ngRoute']);
  • 配置路由模块
    app.config(['$routeProvider',function($routeProvider){ $routeProvider .when('/a',{ controller:'ACtrl', templateUrl:'a.html' }) .otherwise({ redirectTo:'/a' }); }])
  • 布局模板
    通过ng-view指令布局模板,路由匹配的视图会被加载渲染到些区域。
    <div ng-view></div>
  • 路由参数

两个方法匹配路由,分别是when和otherwise,when方法需要两个参数,otherwise方法做为when方法的补充只需要一个参数。
第1个参数是一个字符串,代表当前URL中的hash值。
第2个参数是一个对象,配置当前路由的参数,如视图、控制器等。
a、template 字符串形式的视图模板
b、templateUrl 引入外部视图模板
c、controller 视图模板所属的控制器
d、redirectTo跳转到其它路由

带参数的路由

获取参数,在控制中注入$routeParams可以获取传递的参数

相关文章

  • angular学习资源整理

    中文学习资源: AngularJS学习笔记 – 邹业盛

  • spark_learn

    Angular2学习笔记——NgModule es6 新增的map和foreach AngularJS2.0 学习...

  • angularjs学习笔记

    1、$event.stopPropagation(); 阻止事件冒泡。

  • AngularJS学习笔记

    Angular.js简介 AngularJS是为了克服HTML在构建应用上的不足而设计的。HTML是一门很好的为静...

  • angularjs 学习笔记

    应该熟练应用基本属性及指令比如:ng-model ng-if ng-repeat ng-show 变量输出等 清...

  • AngularJS学习笔记

    引入angular.js 若在页面中引入了angular.js并添加了ng-app="app" ng-contro...

  • Angularjs学习笔记

    表达式 AngularJS 的表达式写在双大括号内{{ expression }},这把数据绑定到HTML。表达式...

  • AngularJS学习笔记

    1、什么是angularjs AngularJS是一个框架(诸多类库的集合)以数据和逻辑做为驱动(核心)。 Ang...

  • AngularJS学习笔记

    1. 介绍 AngularJS是一款由Google公司开发维护的前端MVC框架,其克服了HTML在构建应用上的诸多...

  • AngularJS学习笔记

    简介: AngularJS 是一个 JavaScript 框架。它可通过 标签添加到 HTML 页面。 Ang...

网友评论

      本文标题:AngularJS学习笔记

      本文链接:https://www.haomeiwen.com/subject/vemzsxtx.html