AngularJS学习笔记

<!DOCTYPE html>
<html ng-app="Demo">
<head>
<meta charset="utf-8">
<title></title>
</head>
<body>
<script src="jquery-1.8.3.min.js"></script>
<script src="angular.min.js"></script>
<code lines>
//失去焦点使用 jQuery 的扩展支持冒泡
app.directive('ngBlur', function($parse){
return function($scope, $element, $attr){
var fn = $parse($attr['ngBlur']);
$element.on('focusout', function(event){
fn($scope, {$event: event});
});
}
});
</code> <div code lines>
//失去焦点使用 jQuery 的扩展支持冒泡
app.directive('ngBlur', function($parse){
return function($scope, $element, $attr){
var fn = $parse($attr['ngBlur']);
$element.on('focusout', function(event){
fn($scope, {$event: event});
});
}
});
</div>
<script>
var app = angular.module('Demo', [], angular.noop); app.directive('code', function() {
var func = function($scope, $element, $attrs) {
var html = $element.text();
var lines = html.split('\n'); //处理首尾空白
if (lines[0] == '') {lines = lines.slice(1, lines.length - 1)}
if (lines[lines.length-1] == '') {lines = lines.slice(0, lines.length - 1)} $element.empty(); //处理外框
(function() {
$element.css('clear', 'both');
$element.css('display', 'block');
$element.css('line-height', '20px');
$element.css('height', '200px');
})(); //是否显示行号的选项
if ('lines' in $attrs) {
//处理行号
(function() {
var div = $('<div style="width: %spx; background-color: gray; float: left; text-align: right; padding-right: 5px; margin-right: 10px;"></div>'
.replace('%s', String(lines.length).length * 10));
var s = '';
angular.forEach(lines, function(_, i) {
s += '<pre style="margin: 0;">%s</pre>\n'.replace('%s', i + 1);
});
div.html(s);
$element.append(div);
})();
} //处理内容
(function() {
var div = $('<div style="float: left;"></div>');
var s = '';
angular.forEach(lines, function(l) {
s += '<span style="margin: 0;">%s</span><br />\n'.replace('%s', l.replace(/\s/g, '<span>&nbsp;</span>'));
});
div.html(s);
$element.append(div);
})();
} return {
link: func,
restrict: 'AE' //以元素或属性的形式使用命令
};
});
</script>
</body>
</html>

<!DOCTYPE html>
<html ng-app="Demo">
<head>
<meta charset="utf-8">
<title></title>
</head>
<body>
<script src="jquery-1.8.3.min.js"></script>
<script src="angular.min.js"></script>
<p color="red">有颜色的文本</p>
<color color="red">有颜色的文本</color>
<script>
var app = angular.module('Demo', [], angular.noop); app.directive('color', function() {
var link = function($scope, $element, $attrs) {
$element.css('color', $attrs.color);
}
return {
link: link,
restrict: 'AE'
};
});
</script>
</body>
</html>

<!DOCTYPE html>
<html ng-app="Demo">
<head>
<meta charset="utf-8">
<title></title>
</head>
<body>
<script src="jquery-1.8.3.min.js"></script>
<script src="angular.min.js"></script>
<div ng-controller="TestCtrl">
<p color="color">有颜色的文本</p>
<p color="'blue'">有颜色的文本</p>
</div>
<script>
var app = angular.module('Demo', [], angular.noop); app.directive('color', function() {
var link = function($scope, $element, $attrs) {
console.log($attrs)
$scope.$watch($attrs.color, function(new_v) {
console.log(new_v)
$element.css('color', new_v);
});
}
return link;
}); app.controller('TestCtrl', function($scope) {
$scope.color = 'red';
});
</script>
</body>
</html>

<!DOCTYPE html>
<html ng-app="Demo">
<head>
<meta charset="utf-8">
<title></title>
</head>
<body>
<script src="jquery-1.8.3.min.js"></script>
<script src="angular.min.js"></script>
<div ng-controller="TestCtrl"></div>
<div id="a">A {{ text }}</div>
<div id="b">B </div>
<script>
var app = angular.module('Demo', [], angular.noop); app.controller('TestCtrl', function($scope, $compile) {
var link = $compile($('#a'));
//true参数表示新建一个完全隔离的scope,而不是继承的child scope
var scope = $scope.$new(true);
scope.text = '12345'; //var node = link(scope, function(){});
var node = link(scope); $('#b').append(node);
});
</script>
</body>
</html>

<!DOCTYPE html>
<html ng-app="Demo">
<head>
<meta charset="utf-8">
<title></title>
</head>
<body>
<script src="jquery-1.8.3.min.js"></script>
<script src="angular.min.js"></script>
<div ng-controller="TestCtrl"></div>
<div id="a">A {{ text }}</div>
<div id="b">B </div>
<script>
var app = angular.module('Demo', [], angular.noop); app.controller('TestCtrl', function($scope, $compile) {
var link = $compile($('#a'));
var scope = $scope.$new(true);
scope.text = '12345'; var node = link(scope, function(clone_element, scope) {
clone_element.text(clone_element.text() + ' ...'); //无效
clone_element.text('{{ text2 }}'); //无效
clone_element.addClass('new_class');
}); $('#b').append(node);
});
</script>
</body>
</html>

-_-#【Angular】自定义指令directive的更多相关文章

  1. angular 自定义指令 directive transclude 理解

    项目中断断续续的用了下angular,也没狠下心 认真的学习.angular 特别是自定义指令这块 空白. transclude 定义是否将当前元素的内容转移到模板中.看解释有点抽象. 看解释有点抽象 ...

  2. Angular自定义指令directive:scope属性

    在AngularJS中,除了内置指令如ng-click等,我们还可以自定义指令.自定义指令,是为了扩展DOM元素的功能.代码中,通过指定directive中的restrict属性,来决定这个指令是作为 ...

  3. Angular自定义指令(directive)

    angular自定义指令,意我们可以通过angula自己定义指令,来实现我们的特殊要求,为所欲为,一支穿云箭,千军万马来相见 多少年的老规矩了,先看代码: <!DOCTYPE html> ...

  4. angular 自定义指令详解 Directive

    在angular中,Directive,自定义指令的学习,可以更好的理解angular指令的原理,当angular的指令不能满足你的需求的时候,嘿嘿,你就可以来看看这篇文章,自定义自己的指令,可以满足 ...

  5. Angular之指令Directive系列

    项目筹备近期开启Angular学习,指令比较难理解所以记录备案,推荐Angualr实战学习视频大漠穷秋 Angular实战 一.指令directive概述 指令可以对元素绑定事件监听或者改变DOM结构 ...

  6. angularjs - 自定义指令(directive)

    自定义指令(directive) 使用 .directive 函数来添加自定义的指令. 要调用自定义指令,HTML 元素上需要添加自定义指令名. 例子:使用驼峰法来命名一个指令, demoDirect ...

  7. angularjs自定义指令Directive

    今天学习angularjs自定义指令Directive.Directive是一个非常棒的功能.可以实现我们自义的的功能方法. 下面的例子是演示用户在文本框输入的帐号是否为管理员的帐号"Adm ...

  8. vue从入门到进阶:自定义指令directive,插件的封装以及混合mixins(七)

    一.自定义指令directive 除了核心功能默认内置的指令 (v-model 和 v-show),Vue 也允许注册自定义指令.注意,在 Vue2.0 中,代码复用和抽象的主要形式是组件.然而,有的 ...

  9. Vue input 控件: 通过自定义指令(directive)使用正则表达式限制input控件的输入

    前言: 网站中的input输入框使用非常广泛,因业务场景不同需要对输入框做合法性校验或限制输入,比如电话号码.邮件.区号.身份证号等.input框的不合法内容主要有两种方式处理:1.用户输入内容后,通 ...

随机推荐

  1. PHP安全编程:网站安全设计的一些原则(转)

    深度防范 深度防范原则是安全专业人员人人皆知的原则,它说明了冗余安全措施的价值,这是被历史所证明的. 深度防范原则可以延伸到其它领域,不仅仅是局限于编程领域.使用过备份伞的跳伞队员可以证明有冗余安全措 ...

  2. Qt 学习之路 :自定义只读模型

    model/view 模型将数据与视图分割开来,也就是说,我们可以为不同的视图,QListView.QTableView和QTreeView提供一个数据模型,这样我们可以从不同角度来展示数据的方方面面 ...

  3. surfaceView和Camera配合进行摄像头的预览

    首先是Camera类,在5.0上已经被废弃,不推荐使用但还是支持的.最新的是Camera2类,我还没有研究,据说用法完全不一样,反正也是一个坑跳入另外一个坑. 上面是简介和需要的权限,记得加上权限. ...

  4. Entity Framework 6 学习笔记

    自引用 public class PictureCategory { [Key] [DatabaseGenerated(DatabaseGeneratedOption.Identity)] publi ...

  5. asp.net实现 EXCEL数据导入到数据库功能

    在项目中经常要用EXCEL导入数据到数据库,提高工作效率. 注意:EXCEL中的第一行不能导入. 下面是源码: IntoExcel.aspx: [csharp] <%@ Page Languag ...

  6. linux关机重启命令浅析

    linux关机重启命令 今天我们来介绍下linux系统中常用到的关机重启命令—shutdown.halt.reboot.poweroff以及init. shutdown命令 以安全的方式关闭系统或重启 ...

  7. IOS开发之UIScrollView

    一.UIScrollView的边界处理问题: bounds属性: (1)当bounces属性设置为YES时,当UIScrollView中图片滑动到边界的时候会出现弹动的效果,就像是Linux中的果冻效 ...

  8. Yii2的相关学习记录,后台模板和gii(三)

    前面已经可以正常登录,但我们需要体验下最常用的增删查改的操作.这里就需要gii,通过gii可以方便的生成表单.表格的框架,不需要我们再写重复的东西. gii访问地址:http://localhost/ ...

  9. PHP文件系统概述

    >> 本文固定链接: http://php.ncong.com/php_course/file/wenjianxitong.html >> 转载请注明: 恩聪php 2014年 ...

  10. sql语句去除重复记录(多表连接的查询)

    --处理表重复记录(查询和删除) /********************************************************************************** ...