Angular.js学习笔记 (二)
用A链接对象解析url的组成
var url = 'https://www.baidu.com:8080/aaa/1.html?id=10#name';
var aLink = document.createElement('a');
aLink.href = url;
console.log(aLink);//<a href="https://www.baidu.com:8080/aaa/1.html?id=10#name"></a>
console.log(aLink.search);//?id=10
console.log(aLink.hash);//#name
...
// protocol: https
// host: www.baidu.com:8080
// hostname: www.baidu.com
// port: 8080
// pathname: /aaa/1.html
// search: ?id=10
// hash: #name
JSON就是用字符串描述对象的方式
angular.js常用指令:
AngularJS 属性以 ng- 开头,但是您可以使用 data-ng- 来让网页对 HTML5 有效。
ng-app:ng-app指令用来标明一个AngularJS应用程序,
标记在一个AngularJS的作用范围的根对象上,
系统执行时会自动的执行根对象范围内的其他指令
,可以在同一个页面创建多个ng-app节点,但不推荐。
创建多个ng-app时,默认只能执行第一个,后面的需要手动引导:angular.bootstrap(document.querySelector('[ng-app="myApp2"]'),['myApp2']);但一般不用这种方式引导;正确方式为:angular.module('myApp', ['myApp1', 'myApp2']);
ng-bind:用法示例:
<!-- <strong>{{username}}</strong> -->
<strong ng-bind="username"></strong>
<!-- ng-bind指令在绑定的值包含HTML时会转义,为了安全(跨站脚本攻击) -->
如果确实需要将HTML正确输入,使用的是ng-bind-html,同时需要引进angular-sanitize.js包,并创建一个依赖于此包的模块:angular.module('myApp',['ngSanitize']);最后确保一定要使用自己定义的模块才有效果。
ng-repeat:ng-repeat指令用来编译一个数组重复创建当前元素,如 <li ng-repeat="item in app">
<strong>{{item.name}}</strong>
<span>{{item.age}}</span>
</li>
当app中有重复值时会报错,此时应该这样写:name in app track by $index;
(补充:name.startsWith(lastname):以lastname为开头的name的值为true----这是H5新增元素)
ng-class:ng-class指令可以设置一个键值对,用于决定是否添加一个特定的类名,键为class名,值为bool类型表示是否添加该类名
:ng-class="{red:$even,green:$odd}" ;ng-class也可以像普通class一样使用
ng-show/ng-hide:会根据属性值去确定是否展示当前元素,例如ng-show=false则不会展示该元素
;
ng-if是指是否存在DOM元素
;
ng-href/ng-src指令用于解决当链接类型的数据绑定时造成的加载BUG
ng-switch 指令根据表达式显示或隐藏对应的部分。对应的子元素使用 ng-switch-when 指令,如果匹配选中选择显示,其他为匹配的则移除。你可以通过使用 ng-switch-default 指令设置默认选项,如果都没有匹配的情况,默认选项会显示。
ng-checked 指令用于设置复选框(checkbox)或单选按钮(radio)的 checked 属性。如果 ng-checked 属性返回 true,复选框(checkbox)或单选按钮(radio)将会被选中。
ng-selected 指令用于设置 <select> 列表中的 <option> 元素的 selected 属性。ng-selected 属性的表达式返回 true 则选项被选中。
常用事件指令与原生js基本相同,差别就是前面加上ng-;例如ng-click;
自定义指令(重要但不常用,个人觉得很难):
目的:封装一些常用而且公用的东西,angular仍然还有一些DOM操作的可能,所有的dom操作都应该集中在自定义指令中。
以下demo默认引用bootstrap和angular
demo1:
script:
var demoApp = angular.module('demoApp', []);
// 第一个参数是指令的名字,第二个参数任然应该使用一个数组,数组的最后一个元素是一个函数
// 定义指令的名字,应该使用驼峰命名法
demoApp.directive('itcastButton', [function() {
// 该函数应该返回一个指令对象
return {
template:'<input type="button" value="itcast" class="btn btn-lg btn-primary btn- block" />'
};
}]);
html:
<itcast-button></itcast-button>//代替了template中的内容
demo2:
script:
demoApp.directive('btn', [function() {
return{
scope:{
primary:'@',
lg:'@',
block:'@',
},
template:'<button class="btn {{primary==\'true\'?\'btn-primary\':\'\'}}">button</button>'
}
}]);
html:
<btn primary="false"></btn>
demo3:
script:
demoApp.directive('btn', [function() {
return {
// transclude字面意思就是嵌入,也就是说你需不需要将你的指令内部的元素(注意不是指令的模板)嵌入到你的模板中去,默认是false
// 指令对象的transclude必须设置为true才可以在模版中使用ng-transclude指令
transclude: true,
replace: true, // 替换指令在HTML中绑定的元素
template: '<button class="btn btn-primary btn-lg" ng-transclude></button>'
};
}]);
html:
<btn>itcast</btn>
demo4:(了解一些属性意义即可)
script:
demoApp.directive('breadcrumb', [function() {
return {
// 指定当前指令的类型什么样的,默认情况下全部支持
restrict: 'A',
//E = Element, A = Attribute, C = Class, M = Comment
// template: '', // 模版字符串
templateUrl: 'tmpls/breadcrumb.html',//引入模板
replace: true,
// transclude: true,
};
}]);
Angular.js学习笔记 (二)的更多相关文章
- angular.js学习笔记(二)
1.安装core ,shared模块 ng g m core ng g m shared 2.在shared中导入core模块 core模块只加载一次所以将公共组件放到core中 3.创建公共组 ...
- Angular JS 学习笔记(二)
1. AngularJS 是一个 JavaScript 框架.它可通过 <script> 标签添加到 HTML 页面.AngularJS 通过 指令 扩展了 HTML,且通过 表达式 绑定 ...
- Angular JS 学习笔记(自定义服务:factory,Promise 模式异步请求查询:$http,过滤器用法filter,指令:directive)
刚学没多久,作了一个小项目APP,微信企业号开发与微信服务号的开发,使用的是AngularJS开发,目前项目1.0版本已经完结,但是项目纯粹为了赶工,并没有发挥AngularJS的最大作用,这几天项目 ...
- Angular.js学习笔记(三)
一.过滤器 1.uppercase,lowercase 大小写转换{{ "lower cap string" | uppercase }} // 结果:LOWER CAP STRI ...
- Angular.js 学习笔记
AngularJS 通过新的属性和表达式扩展了 HTML. AngularJS 可以构建一个单一页面应用程序. <!-- ng-app 指令定义一个 AngularJS 应用程序. ng-mod ...
- Angular JS 学习笔记(一)
1. 菜鸟教程:http://www.runoob.com/angularjs/angularjs-tutorial.html 2. Angular JS中文网:http://www.apjs.net ...
- angular.js学习笔记--概念总结
好久没更新了,现在开始学习学习angularjs,并且把学习到的一些知识总结记录一下,方便以后查找以及希望能给初学者一些帮助!(由于本人也是初学ng所以各位慎重理解!) 废话不多说,开始! $root ...
- [转]node.js学习笔记(二)
二.express 1.安装 express4 npm --registry=http://registry.npmjs.org install -g express-generator (全局) 2 ...
- 【转】require.js学习笔记(二)
require.js遵循AMD规范,通过define定义模块,require异步加载模块,一个js文件即一个模块. 一.模块加载require1.加载符合AMD规范模块 HTML: <scrip ...
随机推荐
- RHEL 6.0 FTP服务器配置菜鸟配置过程记录
环境: 虚拟机 RHEL6.0 为了图方便,直接就默认安装了,结果酿成大错,后表~~ 项目:搭建VSFTPD服务器 1.网络ifconfig 配置好,给个IP 2.RPM包或者YUM安装vsftpd ...
- 徒手用Java来写个Web服务器和框架吧<第二章:Request和Response>
徒手用Java来写个Web服务器和框架吧<第一章:NIO篇> 接上一篇,说到接受了请求,接下来就是解析请求构建Request对象,以及创建Response对象返回. 多有纰漏还请指出.省略 ...
- [干货来袭]C#7.0新特性(VS2017可用)
前言 微软昨天发布了新的VS 2017 ..随之而来的还有很多很多东西... .NET新版本 ASP.NET新版本...等等..太多..实在没消化.. 分享一下其实2016年12月就已经公布了的C#7 ...
- Lambda&Java多核编程-5-函数式接口与function包
从前面的总结中我们知道Lambda的使用场景是实现一个函数式接口,那么本篇就将阐述一下何为函数式接口以及Java的function包中提供的几种函数原型. 函数式接口 早期也叫作SAM(Single ...
- 会话控制之session和cookie(20161107)
注:除了登录页面,每个页面,包括处理页面也要加,为了提高安全性 session尽量不用,因为很占内存 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML ...
- android-自定义广告轮播Banner(无限循环实现)
关于广告轮播,大家肯定不会陌生,它在现手机市场各大APP出现的频率极高,它的优点在于"不占屏",可以仅用小小的固定空位来展示几个甚至几十个广告条,而且动态效果很好,具有很好的用户& ...
- JavaScript数据结构——队列的实现
前面楼主简单介绍了JavaScript数据结构栈的实现,http://www.cnblogs.com/qq503665965/p/6537894.html,本次将介绍队列的实现. 队列是一种特殊的线性 ...
- 谈谈数据库中MyISAM与InnoDB区别 针对业务类型选择合适的表
MyISAM:这个是默认类型,它是基于传统的ISAM类型, ISAM是Indexed Sequential Access Method (有索引的顺序访问方法) 的缩写,它是存储记录和文件的标准方法. ...
- 解锁redis锁的正确姿势
解锁redis锁的正确姿势 redis是php的好朋友,在php写业务过程中,有时候会使用到锁的概念,同时只能有一个人可以操作某个行为.这个时候我们就要用到锁.锁的方式有好几种,php不能在内存中用锁 ...
- Django ORM模型的一点体会
作者:Vamei 出处:http://www.cnblogs.com/vamei 严禁转载. 使用Python的Django模型的话,一般都会用它自带的ORM(Object-relational ma ...