angular template浅析
在我们浏览的页面中有大的网站,也有中小型网站,类型不同其中的页面也就不同,但是纵观大部分的网页是否有什么相同的地方呢?如果浏览的是一般的门户网站或者是什么小型的页面的话这种感觉就不是很明显,但是如果关注一些较为大型的点上网站的话,就会发现一个非常明显的特征,那就是每一个页面除了中间body的内容有所变化之外,一个页面的header和footer的变化几乎是一模一样的,当然如果我们每一个页面都做header和footer的话也可以的,但是,如果还有一些div啊 什么section等等的如果在每一个页面都差不多的话,而且位置有不同的话,要每一个页面都写这样的小东西的话还是需要花费一些功夫的,但是在这里,如果借用我们的angular提供的一些模块化功能就可以完美的解决这一个问题,下面我将浅谈这个技术。
<div>
<div class="header"></div>------这里的header是属于class,还有element,attribute,和M
</div>
<div class="content"></div>
<div>
<div class="footer"></div>
</div>
以上的代码片段是一个基本的页面,包括header content footer三个部分组成,但是在这里我们的header和footer都是一样的,我们不需要再次去写,在这里我们就将使用angulars提供的模块化解决这一问题,
首先我们必须现在html中设置为全局的范围,ng-app=“main”,当然我们还是得在我们的文档中引用angular这个js文件,紧接着我们就要写js代码哦,这个js代码我们就没有必要把js代码写在外部js文件中。
var temp=angular.module('main',[]);---------------》main是我们在html标签之上设置的相当于全局变量,还有就是在这里完全体现了angular的模块化思想。
temp.directive('header',function(){----------》在这里出现就是我们下面要将到类名
return{
restrict:"C",----------------C代表class
templateUrl:"../temp/header.html",-----------我们需要替换的模板页面的相对路径。
replace:true,
link:function(scope,element,attr){----------------》成功之后的回调函数,在这里面我们可以看到引入的模板页面和为我们新引入的模板页面添加新的事件,
在这里需要注意的就是,如果我们要为引入的header或者是我们的footer添加jquery事件或者是我们原生的js事件的时候,不能在别的js代码文件唉中去进行添加,但是css除外,这个可以新建一个文件夹都可以进行编辑,但是在我们的添加事件就必须调用这里的element方法。
element.bind('click',function(){--------------为我们新增加的元素增加了新的事件,同时也可以增加一些特效。
alert('ok');
})
}
}
});
temp.directive('footer',function(){
return{
restrict:"C",----------------------------------这里如果是上面对应的什么就写什么,主要有AEMC分别表示属性,元素,解释,类。
templateUrl:"../temp/footer.html",
replace:true,
link:function(scope,element,attr){
element.bind('click',function(){
alert('well done')
})
}
}
});
当然我们引入的header和footer你也需要书写在别的地方,可以存放在我们这里将的template模板文件夹里面,方便以后需要的时候进行调用,同时进行样式分离,这样更好的便于我们代码以及页面的管理。
这种模板化的主要优势就是在于如果应用在那些比较大型的网站上的话,我们可以实现代码的循环利用,减少编码的工作量,同时也能保持页面风格的一致化,保持良好的交互性。也可以做到元素的随意移动性在这里还需要深入了解的就是我们css之中的定位,以及BFC的相关知识,将这些css知识结合起来的话,将会大大加强我们的编码效率。
angular template浅析的更多相关文章
- [Angular] Bind async requests in your Angular template with the async pipe and the "as" keyword
Angular allows us to conveniently use the async pipe to automatically register to RxJS observables a ...
- Angular template ng-template/container/content
1. ng-template 形式:<ng-template>...</ng-template> 默认ng-template中的内容会隐藏; 可通过[ngIf]来控制内容显示隐 ...
- 基于angular的route实现单页面cnodejs
Angular ui-router 前言 之前不太理解前端怎么实现路由功能,以前知道有一种方式使用html5的pushState可以操作url才实现路由的功能,在实践项目中也用过一次,后来这种操作叫成 ...
- angular编译机制
转载https://segmentfault.com/a/1190000011562077 Angular编译机制 前言 http://www.cnblogs.com/ztwBlog/p/620975 ...
- AngularJs学习笔记--Understanding Angular Templates
原版地址:http://docs.angularjs.org/guide/dev_guide.mvc.understanding_model angular template是一个声明规范,与mode ...
- angular2 学习笔记 (Typescript)
1.接口奇葩验证 interface Abc { name : string } function abc(obj : Abc) { } let ttc = { name: "adad&qu ...
- angular1.3 video
video标签动态获取播放链接是出现 Error: $interpolate:interr Interpolation Error Error: $sce:insecurl Processing of ...
- angularjs 简单指令
<!DOCTYPE html> <html data-ng-app="app"> <head> <title>angular js& ...
- [Angular 2] Create template with Params
Angular 2 templates have a special let syntax that allows you to define and pass a context when they ...
随机推荐
- (转)ASP.NET MVC路由配置
一.命名参数规范+匿名对象 1 routes.MapRoute(name: "Default", 2 url: "{controller}/{action}/{id}&q ...
- Delphi socket() 函数的应用
socket()系统调用,带有三个参数: 1.参数domain指明通信域,如PF_UNIX(unix域),PF_INET(IPv4), PF_INET6(IPv6)等 2.type指明通信类型,最常用 ...
- Java---网络编程(3)-TCP-互传文件和图片
☆ TCP 建立连接,形成传输数据的通道. 在连接中进行大数据量传输 通过三次握手完成连接,是可靠协议 必须建立连接,效率会稍低 Socket 和 ServerSocket类 TCP传输 TCP So ...
- HDU 4722 Good Numbers 2013年四川省赛题
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4722 题目大意:给定一个区间,求区间中有多少个满足每位上的数的和是10的倍数. 解题思路:先打表暴力求 ...
- mahout算法源码分析之Collaborative Filtering with ALS-WR拓展篇
Mahout版本:0.7,hadoop版本:1.0.4,jdk:1.7.0_25 64bit. 额,好吧,心头的一块石头总算是放下了.关于Collaborative Filtering with AL ...
- hive UDAF源代码分析
sss /** * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license a ...
- DataGridView 选中行 分类: DataGridView 2015-01-22 09:07 51人阅读 评论(0) 收藏
说明: (1)命名 DataGridView 名称:dgvStockFirst 行索引:recordIndex (2)设置DataGridView属性: SelectionMode=FullRowSe ...
- 深入了解VSTS的Unit Test测试属性
深入的了解一下方法上带有的属性的含义.每个方法上几乎都带有TestMethod这个属性,我们直觉告诉我们,这肯定是表示被测试函数的意思.事实也正是如此,在Unit Test里,有许多测试属性,常用的如 ...
- [AngularJS] Sane, scalable Angular apps are tricky, but not impossible.
Read fromhttps://medium.com/@bluepnume/sane-scalable-angular-apps-are-tricky-but-not-impossible-less ...
- Qt 学习之路:Canvas
在 QML 刚刚被引入到 Qt 4 的那段时间,人们往往在讨论 Qt Quick 是不是需要一个椭圆组件.由此,人们又联想到,是不是还需要其它的形状?这种没玩没了的联想导致了一个最直接的结果:除了圆角 ...