Angular 核心概念2
自定义指令
- 指令增强了 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属性可以定义指令的使用类型
- E:Element(元素)
- A:Attribute(属性)
- C:Class(类名)
- 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"
作用
- 多浏览器同时浏览
- 代码热更新
其他
- 官网 https://www.browsersync.io/docs/command-line
- api
- 和gulp集成
- 3001的端口地址是管理平台
wappalyzer
Angular 核心概念2的更多相关文章
- Angular核心概念之五---过滤器
Filter:过滤器,用于在view中呈现数据时显示为另一种格式:过滤器的本质是一个函数,接收原始数据转换为新的格式进行输出: function(oldVal){ ... return newVal ...
- Angular核心概念
一.集成开发环境@angular/cli IE8之后才有debugger工具 2009,nodejs发布,前端Big Bang 1.1 基于NodeJS的工具链 打包工具 grunt 对js代码做合并 ...
- Angular 核心概念
module(模块) 作用 通过模块对页面进行业务上的划分,根据不同的功能划分不同的模块. 将重复使用的指令或者过滤器之类的代码做成模块,方便复用 注意必须指定第二个参数,否则变成找到已经定义的模块 ...
- 2 Angular 2 的核心概念
一.组件(Components): 组件是构成 Angular 应用的基础和核心,它是一个模板的控制类,用于处理应用和逻辑页面的视图部分.组件知道如何渲染自己及配置依赖注入,并通过一些由属性和方法组成 ...
- Angularjs -- 核心概念
angularjs旨在减轻使用AJAX开发应用程序的复杂度,使得程序的创建.測试.扩展和维护变得easy.以下是angularjs中的一些核心概念. 1. client模板 多页面的应用通 ...
- 第214天:Angular 基础概念
一.Angular 简介 1. 什么是 AngularJS - 一款非常优秀的前端高级 JS 框架 - 最早由 Misko Hevery 等人创建 - 2009 年被 Google 公式收购,用于其多 ...
- 领域驱动设计(DDD)部分核心概念的个人理解
领域驱动设计(DDD)是一种基于模型驱动的软件设计方式.它以领域为核心,分析领域中的问题,通过建立一个领域模型来有效的解决领域中的核心的复杂问题.Eric Ivans为领域驱动设计提出了大量的最佳实践 ...
- Javascript本质第一篇:核心概念
很多人在使用Javascript之前都至少使用过C++.C#或Java,面向对象的编程思想已经根深蒂固,恰好Javascript在语法上借鉴了Java,虽然方便了Javascript的入门,但要深入理 ...
- [程序设计语言]-[核心概念]-02:名字、作用域和约束(Bindings)
本系列导航 本系列其他文章目录请戳这里. 1.名字.约束时间(Binding Time) 在本篇博文开始前先介绍两个约定:第一个是“对象”,除非在介绍面向对象语言时,本系列中出现的对象均是指任何可以有 ...
随机推荐
- shell 复习
grep -v zip$ -v 逻辑否 $以zip结尾 (^开头) -n str不空,-z str 空
- 基于nodejs实现js后端化处理
今天D哥给我提了个问题,"用php执行过js没"?咋一听,没戏~~毕竟常规情况下,js是依赖浏览器运行的.想在php后端采集的同时利用js运行结果并传递给php使用,没戏! 然后回 ...
- C/C++/Qt 统计运行时间
http://www.cnblogs.com/Romi/archive/2012/04/19/2457175.html 程序中经常需要统计时间,需要统计某项运算的运行时间时,需要计算时间差. 1. C ...
- Subgradient Algorithm
Subgradient是一种可以优化不可微的凸函数的方法. 首先回顾凸函数的定义: $f(y) \geq f(x) + \nabla f(x)^T(y-x), all \hspace{2 pt} x, ...
- visual studio 2013 秘钥
#visual studio 2013# 有效密钥:BWG7X-J98B3-W34RT-33B3R-JVYW9
- 十六、【适合中小企业的.Net轻量级开源框架】EnterpriseFrameWork框架核心类库之单点登录SSO
回<[开源]EnterpriseFrameWork框架系列文章索引> EFW框架源代码下载:http://pan.baidu.com/s/1qWJjo3U 单点登录(Single Sign ...
- Application MyTest has not been registered. This is either due to a require() error during initialization or failure to call AppRegistry.registerComponent.
运行react-native项目时报错. 说明一下:项目本来是好的,再次运行就报错了 解决解决办法倒是有,不过具体什么原因不知道.希望有知道具体原因的童鞋能够补充一下 第一种情况:真的是注册的时候写错 ...
- java nio 网络框架实现
maven项目 https://github.com/solq360/common 链式编/解码 链路层链式处理 管道管理socket 多协议处理非常方便 仿netty NioEventLoop 单线 ...
- 实战android菜单项之XML加载菜单与动态菜单项[转]
原文地址:http://blog.csdn.net/kaiwii/article/details/7767225 自定义android应用程序的菜单项首先要知道切入点.经过学习,知道主要是两个Acti ...
- SNF开发平台WinForm之十一-程序打包-SNF快速开发平台3.3-Spring.Net.Framework
原来我们用的是微软自带的打包工具去打包,但感觉好像也是第三方做的打包并且很是麻烦,还有时不成功报错.那综合考虑就找一个简单实用的打包工具吧,就找到了NSIS这个.具体打包步骤如下: 1.安装NSIS ...