自定义指令

  • 指令增强了 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. SPF 简介

    SPF 简介 摘要: SPF 是发送方策略框架 (Sender Policy Framework) 的缩写,希望能成为一个防伪标准,来防止伪造邮件地址.这篇文章对 SPF 进行了简单介绍,并介绍了它的 ...

  2. ios面试技术要点

    iOS面试 技术总结点(可参考):多线程 运行时 runloop app框架 几种动画编程 jsonmodel原理 sdwebimage原理 masonry怎么应用及原理 应用框架有哪些 说一下Fac ...

  3. nginx url自动加斜杠的问题

    nginx url自动加斜杠问题及301重定向 时间:2016-02-04 15:14:28来源:网络 导读:nginx url自动加斜杠问题及301重定向,URL指向一个目录并且在最后没有包含斜杠, ...

  4. js apply/call/caller/callee/bind使用方法与区别分析

    一.call 方法 调用一个对象的一个方法,以另一个对象替换当前对象(其实就是更改对象的内部指针,即改变对象的this指向的内容). Js代码 call([thisObj[,arg1[, arg2[, ...

  5. Linux下U盘变成只读

    今天用Ubuntu给同学拷贝数据的时候,突然其中一个文件夹U盘就不能复制和删除了.再windows7下可以删除除修改的那个文件夹之外的数据,但修改的那个文件夹死活删除不掉,只读属性也去不掉.再Ubun ...

  6. MyBatis知多少(14)分散的数据库系统

    任何一个重要的数据库无疑都会拥有不止一个依赖者.即使该数据库只是简单地被两个Web 应用程序所共享,也有许多事情需要考虑.假设有一个名为网上购物车的Web应用程序,它使用了一个包含类别代码的数据库.就 ...

  7. 快乐的JS正则表达式(三)

    ?的用途. 小任务:匹配一段网址如var str = "http://www.123.com/";注意http也可以是https var str = "http://i. ...

  8. Tracert 转

    路由跟踪在线Tracert Tracert(跟踪路由)是路由跟踪实用程序,用于确定 IP 数据报访问目标所采取的路径.Tracert 命令用 IP 生存时间 (TTL) 字段和 ICMP 错误消息来确 ...

  9. webapp项目前端总结

    提纲 整体把握,从设计稿入手——技术选型 并行开发,从实现静态页面开始 前端自动化 前端js逻辑 前后端集成 小问题集合 总结 1.整体把握,从设计稿入手 —— 技术选型 新项目到手,算是运气好,设计 ...

  10. Pagekit – 现代化技术构建的轻量的 CMS 系统

    Pagekit 是一个模块化,轻量的 CMS 系统,基于现代化的技术,如 Symfony 组件和 Doctrine.它提供了一个很好的平台,用于主题和延伸开发.Pagekit 为您提供了工具来创造美丽 ...