AngularJS学习笔记(四) 自定义指令
指令(directive)是啥?简单来说就是实现一定功能的XXX。。。之前一直用的ng-model,ng-click等等都是指令。当我有一个ng没提供的需求的时候,就可以自定义个指令。指令的好处显而易见,方便复用。
本文会以一个检查用户名是否重复的指令为例,说明自定义指令怎么写。这个指令是我琢磨着写的,只是一个例子,知识点不全是一定的,不过能用,嗯。。不过如果代码哪里写的有问题请指出。
先看代码
<button my-check>注册</button>
当然,这是属性风格的指令,还可以有标签风格,class,注释。。。
m1.directive("myCheck",["$rootScope",function($rootScope){
return{
restrict : 'A',
link:function(scope,element){
element[0].onclick=function(){
var data=$rootScope.info;
var name=scope.regText.name;
var pw=scope.regPassword.name;
console.log(name,pw);
if(name&&pw){
for(var i=0;i<data.length;i++){
if(data[i].name===name){
scope.state="用户名已经被占用";
return;
}
}
scope.state="注册成功";
data.push({"name":name,"password":pw});
console.log(data);
}
}
}
}
首先,directive方法的第一个参数是指令名,不过指令名有一点奇怪的就是在html和js中,写法是不一样的,这是比较令我困惑的地方。
然后第二个参数数组还是常见的依赖注入写法(这里我注入$rootScope的原因是用户信息都挂在$rootScope的一个属性上),然后直接return一个对象。
对象属性:restrict:“A”代表这个指令是个属性风格的指令
link:写一个函数,函数里是这个指令的逻辑。
值得提到的是,link函数的参数,它的参数有三个(我只用到了2个)
第一个是scope作用域,这个作用域默认是标签的父级作用域,就是标签在那个作用域下,scope就是那个$scope。当然你可以改作用域,这个以后再说。。
第二个存着DOM元素,比较诡异的是它是一个数组,并不是DOM本身,而是这个对象的第一个元素就是这个DOM对象
第三个属性我输出了下,我把对象输出了下。。

内容倒是挺熟,不过这个属性本身存在的意义是啥?又为啥要写成这样,再留个坑。。看来需要买本ng工具书了。。
下一节没想好写什么,拟定是看看服务方面有没有可写的。
AngularJS学习笔记(四) 自定义指令的更多相关文章
- AngularJs学习笔记3——自定义指令
指令 概述: 前面也说过一些常用指令,用于快速入门.现在详细总结一下:指令用于实现各种页面的操作,是对于底层DOM操作的封装,扩展了HTML的行为,实现页面交互以及数据绑定. 指令是一种执行的信号,一 ...
- AngularJs学习笔记5——自定义服务
前面整理了AngularJs双向数据绑定和自定义指令的相关内容,从手册上看也知道,ng部分还包括过滤器和函数,以及服务等. 过滤器:filter,就是对数据进行格式化,注意管道格式,例如: {{表达式 ...
- 【AngularJS学习笔记】01 指令、服务和过滤器
AngularJS 指令是扩展的 HTML 属性,带有前缀 ng-. 比如: ng-app 指令初始化一个 AngularJS 应用程序.注意ng-app一般为空,如果值不为空,就得加这样一句代码va ...
- 微信小程序学习笔记四 自定义组件
1. 自定义组件 类似Vue或react中的自定义组件 小程序允许我们使用自定义组件的方式来构建页面 1.1 创建自定义组件 类似于页面, 一个自定义组件由json wxml wxss js 4个文件 ...
- AngularJs学习笔记--Forms
原版地址:http://code.angularjs.org/1.0.2/docs/guide/forms 控件(input.select.textarea)是用户输入数据的一种方式.Form(表单) ...
- AngularJs学习笔记--html compiler
原文再续,书接上回...依旧参考http://code.angularjs.org/1.0.2/docs/guide/compiler 一.总括 Angular的HTML compiler允许开发者自 ...
- AngularJs学习笔记--concepts(概念)
原版地址:http://code.angularjs.org/1.0.2/docs/guide/concepts 继续.. 一.总括 本文主要是angular组件(components)的概览,并说明 ...
- AngularJs学习笔记--Creating Services
原版地址:http://docs.angularjs.org/guide/dev_guide.services.creating_services 虽然angular提供许多有用的service,在一 ...
- AngularJs学习笔记--IE Compatibility 兼容老版本IE
原版地址:http://docs.angularjs.org/guide/ie Internet Explorer Compatibility 一.总括 这文章描述Internet Explorer( ...
随机推荐
- R中导入excel乱码的解决办法
本文操作系统环境为win10,使用Rstdio. 要说明windows下在使用Rstdio的时候,在使用xlsx包,导入excel表乱码的解决办法. 1.我们先安装xlsx包 install.pack ...
- 时下世界上最先进的液晶面板技术---ips
IPS是英文In-Plane Switching的缩写,英文含义为平面转换屏幕技术,由日立公司于2001推出的液晶面板技术,俗称“Super TFT”,是目前世界上最先进的液晶面板技术,目前已经广泛使 ...
- Sql Server 查询一段日期内的全部礼拜天
/* 查询一段日期内的全部礼拜天 @startdate 開始日期 @enddate 结束日期 */ declare @startDate datetime declare @endDate datet ...
- Intellij idea subversion checkout error
Subversion 1.8 and IntelliJ IDEA 13 Unlike its earlier versions, Subversion 1.8 support uses the nat ...
- phpStorm pycharm编辑器主题修改,自定义颜色
新的启程 注: 本人小菜鸟一枚,内容也是从其他博客中借鉴的,谨以此作为写博客开端. phpstorm修改主题: 1. phpstorm主题下载 http://www.phpstorm-themes.c ...
- 如何在iOS中使用libxml
本文转载至 http://blog.csdn.net/cloudhsu/article/details/8087628 1. 选择xcode工程设定 2. 选择target 3. 选择Summary ...
- TP框架---thinkphp表单验证
自动验证是ThinkPHP模型层提供的一种数据验证方法,可以在使用create创建数据对象的时候自动进行数据验证.验证的代码要写在模型层即Model里面. 数据验证有两种方式: 静态方式:在模型类里面 ...
- Django 模型系统(model)&ORM--进阶
QuerySet 可切片 使用Python 的切片语法来限制查询集记录的数目 .它等同于SQL 的LIMIT 和OFFSET 子句. >>> Entry.objects.all()[ ...
- cocos2d-x 源代码分析 : control 源代码分析 ( 控制类组件 controlButton)
源代码版本号来自3.1rc 转载请注明 cocos2d-x源代码分析总文件夹 http://blog.csdn.net/u011225840/article/details/31743129 1.继承 ...
- 003-unity3d 物理引擎简介以及示例
一.概述 物理引擎就是模拟真实世界中物体碰撞.跌落等反应的引擎,通过ballence.愤怒的小鸟等理解.Unity3D的物理引擎使用的是Nvidia的PhysX. 物理引擎是一个计算机程序模拟牛顿力学 ...