自定义指令

  • 指令增强了 HTML,提供额外的功能
  • 内置的指令基本上已经可以满足我们的绝大多数需要了
  • 少数情况下我们有一些特殊的需要,可以通过自定义指令的方式实现

普通指令

  • 语法
<div hello-world></div>
<hello-world></hello-world>
 angular.module('myModule', [])
.controller('HelloController', ['$scope', function($scope) {
$scope.customer = {
name: '张伟',
address: '五棵松下一站'
};
}])
.directive('helloWorld', ['$log', function($log) {
// 此处为指令工厂 工厂应该返回指令对象
return {
template: 'Name: {{customer.name}} Address: {{customer.address}}'
};
}])
  • 请参照资料-备课代码-01-custom-directive.html理解

内容转置

  • 把页面指令中的内容转置到指令中template中有ng-transclude指令的innerhtml中
  • transclude属性:bool
  • replace属性:bool 是否替换指令的dom元素
    • 请参照资料-备课代码-02-custom-directive.html理解

模板抽取

  • template属性是不支持html代码段换行的,所以把大量的html写在里面结构会很不清晰,我们可以借助templateUrl属性抽离模板页面
  • templateUrl属性就是以异步请求的方式去请求模板
    • 请参照资料-备课代码-02-custom-directive.html理解

指令的独立作用域

  • 每个模块中的$scope都有自己的独立作用域

    • 请参照资料-备课代码-04-scope.html理解
  • scope属性:object,可以实现指令的独立作用域
    • 请参照资料-备课代码-03-custom-directive.html理解

作用域的属性传递

  • 语法
 scope: {
title: '@',
type: '@'
},
    <div class="row">
<div class="col-md-4">
<bs-panel type="default" title="panel1">
lsdjfklsdjfklsajdflsdaj
</bs-panel>
</div>
<div class="col-md-4">
<bs-panel type="default" title="panel2">
lsdjfklsdjfklsajdflsdaj
</bs-panel>
</div> </div>
  • @ 指的是当前属性在执行时会去取指令作用到的DOM元素的title

    • 请参照资料-备课代码-03-custom-directive.html理解

自定义指令的类型

  • restrict属性可以定义指令的使用类型

    1. E:Element(元素)
    2. A:Attribute(属性)
    3. C:Class(类名)
    4. M:Comment(注释)
  • 注意:在定义指令应该使用驼峰命名法,使用指令时应该使用的是全小写字母中划线分割的方式,注释的方式没有办法使用转置等功能

    • 请参照资料-备课代码-03-custom-directive1.html理解

指令中的dom操作

  • link属性是指令中可以操作dom元素的地方(css,属性,innerHtml)

    • 请参照资料-备课代码-05-link-directive.html理解
  • 语法
 link: function($scope, element, attributes) {
// Scope是指令的scope,element是指令作用的dom元素,attributes是属性
// 我们经常说的dom操作指的是css,属性,innerhtml这些操作
element.on('mouseenter', function() {
element.css('backgroundColor', 'red');
}).on('mouseleave', () => {
element.css('backgroundColor', 'transparent');
});
}

过滤器

  • 过滤器的主要用途就是一个格式化/筛选数据的小工具
  • 一般用于服务端存储的数据转换为用户界面可以理解的数据
    • 请参照资料-备课代码-06-filter.html理解

内置过滤器

  • 语法

    • 不同的过滤器语法不同
// 1: 需要过滤的数据,2: 过滤器的类型,3: 之后都是参数
{{ currency_expression | currency : symbol : fractionSize}}
  • 也可以引入语言包,然后直接给过滤器类型即可
  • 过滤器既可以在html中使用也可以在js中使用

常用的内置过滤器

currency
  • 定义本位币类型
date
  • 定义日期结构
json
  • 输出有格式的对象,配合pre标签用于调试
lowercase
  • 把大写字母变为小写字母
uppercase
  • 把小写字母变为大写字母
number
  • 定义小数点
limitTo
  • 截取字符串操作
filter
  • 模糊匹配对象中所有属性的值,和展示没有关系
  • 如果传入一个对象的话,会根据特定的属性检索
    • 请参照资料-备课代码-07-filter2.html理解
orderBy
  • 按照指定的对象属性排序

    • 请参照资料-备课代码-08-filter3.html理解

自定义过滤器

  • 根据自己的需求定义需要的过滤器

    • 请参照资料-备课代码-09-filter4.html理解

服务

内置服务

$http

  • 请求连接服务

自定义服务

factory

service

provider

路由

控制页面跳转的第三方插件

ng-route

ng-route使用步骤

  • npm install angular-route -save
  • 引入这个包
  • 在自己的模块中添加 ngRoute模块依赖
  • 路由配置(配置路由规则)
    • 规则指的就是 什么样的请求 找什么控制器
    • [{url:'/sdf',controller:'MainController'}]
  • 编写对应的控制器和视图

主要方法

  • when():配置路径和参数;
  • otherwise:配置其他的路径跳转,可以想成default。
  • controller:对应路径的控制器函数,或者名称
  • template:对应路径的页面模板,会出现在ng-view处,比如"
    xxxx

    "

  • templateUrl:对应模板的路径,比如"src/xxx.html"
  • redirectTo:重定向地址

ui-router

官网地址

ui-router使用步骤

  • 安装或者下载ui-router的包
  • 引入这个包
  • 在自己的模块中添加 ui-view模块依赖
  • 路由配置(配置路由规则)
    • 规则指的就是 什么样的请求 找什么控制器
    • [{url:'/sdf',controller:'MainController'}]
  • 编写对应的控制器和视图

ng-route和ui-router的区别

  • ng-route在一个页面中只能有一个坑
  • ui-router在页面中可以有多个坑
  • ui-router封装了ng-route

扩展

browser-sync

  • 安装npm install browser-sync -g
  • browser-sync start --server --files=".,*.html"

作用

  • 多浏览器同时浏览
  • 代码热更新

其他

wappalyzer

Angular 核心概念2的更多相关文章

  1. Angular核心概念之五---过滤器

    Filter:过滤器,用于在view中呈现数据时显示为另一种格式:过滤器的本质是一个函数,接收原始数据转换为新的格式进行输出: function(oldVal){ ... return newVal ...

  2. Angular核心概念

    一.集成开发环境@angular/cli IE8之后才有debugger工具 2009,nodejs发布,前端Big Bang 1.1 基于NodeJS的工具链 打包工具 grunt 对js代码做合并 ...

  3. Angular 核心概念

    module(模块) 作用 通过模块对页面进行业务上的划分,根据不同的功能划分不同的模块. 将重复使用的指令或者过滤器之类的代码做成模块,方便复用 注意必须指定第二个参数,否则变成找到已经定义的模块 ...

  4. 2 Angular 2 的核心概念

    一.组件(Components): 组件是构成 Angular 应用的基础和核心,它是一个模板的控制类,用于处理应用和逻辑页面的视图部分.组件知道如何渲染自己及配置依赖注入,并通过一些由属性和方法组成 ...

  5. Angularjs -- 核心概念

     angularjs旨在减轻使用AJAX开发应用程序的复杂度,使得程序的创建.測试.扩展和维护变得easy.以下是angularjs中的一些核心概念. 1. client模板      多页面的应用通 ...

  6. 第214天:Angular 基础概念

    一.Angular 简介 1. 什么是 AngularJS - 一款非常优秀的前端高级 JS 框架 - 最早由 Misko Hevery 等人创建 - 2009 年被 Google 公式收购,用于其多 ...

  7. 领域驱动设计(DDD)部分核心概念的个人理解

    领域驱动设计(DDD)是一种基于模型驱动的软件设计方式.它以领域为核心,分析领域中的问题,通过建立一个领域模型来有效的解决领域中的核心的复杂问题.Eric Ivans为领域驱动设计提出了大量的最佳实践 ...

  8. Javascript本质第一篇:核心概念

    很多人在使用Javascript之前都至少使用过C++.C#或Java,面向对象的编程思想已经根深蒂固,恰好Javascript在语法上借鉴了Java,虽然方便了Javascript的入门,但要深入理 ...

  9. [程序设计语言]-[核心概念]-02:名字、作用域和约束(Bindings)

    本系列导航 本系列其他文章目录请戳这里. 1.名字.约束时间(Binding Time) 在本篇博文开始前先介绍两个约定:第一个是“对象”,除非在介绍面向对象语言时,本系列中出现的对象均是指任何可以有 ...

随机推荐

  1. 使用Highcharts实现图表展示

    本篇随笔记录的是本人2011年做广州地铁协同办公项目时,图表需求的解决方案.(Demo中只是虚拟的测试数据) 关键技术点: 使用Highcharts实现图表展示: 另外使用Highslide弹窗.使用 ...

  2. 设置zookeeper jvm内存

    看了你的问题, 我还特意的查看了ZooKeeper的启动脚本代码.ZooKeeper启动脚本没有加任何参数,也就是使用jvm默认的. 如果想要加大ZooKeeper的JVM使用内存.可以在更改{ZK_ ...

  3. eclipse从数据库逆向生成Hibernate实体类

    做项目必然要先进行数据库表设计,然后根据数据库设计建立实体类(VO),这是理所当然的,但是到公司里做项目后,让我认识到,没有说既进行完数据库设计后还要再“自己”建立一变VO.意思是,在项目设计时,要么 ...

  4. 审核流(3)低调奢华,简单不凡,实例演示-SNF.WorkFlow--SNF快速开发平台3.1

    下面我们就从什么都没有,结合审核流进行演示实例.从无到有如何快速完美的实现,然而如此简单.低调而奢华,简单而不凡. 从只有数据表通过SNF.CodeGenerator代码生成器快速生成单据并与审核流进 ...

  5. 论文第4章:iOS绘图平台的实现

    面向移动设备的矢量绘图平台设计与实现 Design and Implementation of Mobile Device-oriented Vector Drawing Platform 引用本论文 ...

  6. Linux下查看tcp连接数及状态

    netstat -n | awk ‘/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}’ TIME_WAIT 8947FIN_WAIT1 15FIN_W ...

  7. Asphyre 更名pxl 终于全面支持跨平台了.Delphi饭们 激动了吧.

    Asphyre We are happy to announce the official release of our latest framework Pascal eXtended Librar ...

  8. codeforces MUH and Cube Walls

    题意:给定两个序列a ,b, 如果在a中存在一段连续的序列使得 a[i]-b[0]==k, a[i+1]-b[1]==k.... a[i+n-1]-b[n-1]==k 就说b串在a串中出现过!最后输出 ...

  9. AVL树(一)之 图文解析 和 C语言的实现

    概要 本章介绍AVL树.和前面介绍"二叉查找树"的流程一样,本章先对AVL树的理论知识进行简单介绍,然后给出C语言的实现.本篇实现的二叉查找树是C语言版的,后面章节再分别给出C++ ...

  10. iOS-UIView-设置背景图片4种方式

    一 . 设置UIView的背景图片 1.将图片作为UIView的背景色,该方法过于占内存,不建议使用.     //1.imageNamed方式 self.view.backgroundColor = ...