-_-#【Angular】自定义指令directive



<!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> </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的更多相关文章
- angular 自定义指令 directive transclude 理解
项目中断断续续的用了下angular,也没狠下心 认真的学习.angular 特别是自定义指令这块 空白. transclude 定义是否将当前元素的内容转移到模板中.看解释有点抽象. 看解释有点抽象 ...
- Angular自定义指令directive:scope属性
在AngularJS中,除了内置指令如ng-click等,我们还可以自定义指令.自定义指令,是为了扩展DOM元素的功能.代码中,通过指定directive中的restrict属性,来决定这个指令是作为 ...
- Angular自定义指令(directive)
angular自定义指令,意我们可以通过angula自己定义指令,来实现我们的特殊要求,为所欲为,一支穿云箭,千军万马来相见 多少年的老规矩了,先看代码: <!DOCTYPE html> ...
- angular 自定义指令详解 Directive
在angular中,Directive,自定义指令的学习,可以更好的理解angular指令的原理,当angular的指令不能满足你的需求的时候,嘿嘿,你就可以来看看这篇文章,自定义自己的指令,可以满足 ...
- Angular之指令Directive系列
项目筹备近期开启Angular学习,指令比较难理解所以记录备案,推荐Angualr实战学习视频大漠穷秋 Angular实战 一.指令directive概述 指令可以对元素绑定事件监听或者改变DOM结构 ...
- angularjs - 自定义指令(directive)
自定义指令(directive) 使用 .directive 函数来添加自定义的指令. 要调用自定义指令,HTML 元素上需要添加自定义指令名. 例子:使用驼峰法来命名一个指令, demoDirect ...
- angularjs自定义指令Directive
今天学习angularjs自定义指令Directive.Directive是一个非常棒的功能.可以实现我们自义的的功能方法. 下面的例子是演示用户在文本框输入的帐号是否为管理员的帐号"Adm ...
- vue从入门到进阶:自定义指令directive,插件的封装以及混合mixins(七)
一.自定义指令directive 除了核心功能默认内置的指令 (v-model 和 v-show),Vue 也允许注册自定义指令.注意,在 Vue2.0 中,代码复用和抽象的主要形式是组件.然而,有的 ...
- Vue input 控件: 通过自定义指令(directive)使用正则表达式限制input控件的输入
前言: 网站中的input输入框使用非常广泛,因业务场景不同需要对输入框做合法性校验或限制输入,比如电话号码.邮件.区号.身份证号等.input框的不合法内容主要有两种方式处理:1.用户输入内容后,通 ...
随机推荐
- 1.1GTK+ 的简单程序HelloWorld
1.1GTK+ 的简单程序HelloWorld 编译执行如图所看到的:
- [ES6] Array.findIndex()
In es5, you can use indexOf to get the index of one item in an array. In es6, you can use findIndex( ...
- 自定义filter包
在有些时候,你可能需要以你的所有项目进行全局的过滤. 因为你的项目可以设计到互相的依赖和调用 . 修改在tomcat下的conf下的web.xml文件.和在原来的web-inif下的修改一样,添加fi ...
- sed 批量替换多个文件里的某个字符/串
提示: 国际惯例使用前先备份 sed -i "s/a/b/g" `grep 'a' -rl ./`
- sublime text3 插件配置
(转) sublme text 全程指引:http://www.cnblogs.com/figure9/p/sublime-text-complete-guide.html 使用Package Con ...
- php模拟HTTP协议发送post请求方法
今天用到php模拟http发送post请求记录 代码如下: <?php $url = 'xxxx.com'; $data = 'a=one&b=two'; $data = urlenco ...
- HDU3853
题意:给R*C的迷宫,起点为1,1 终点为R,C 且给定方格所走方向的概率,分别为原地,下边,右边,求到终点的期望. 思路:既然是求到终点的期望,那么DP代表期望,所以DP[i][j]=原地的概率*D ...
- MiniProfiler.EF6监控调试MVC5和EF6的性能
转自:蓝狐学MVC教程 以前开发Webform的时候可以开启trace来跟踪页面事件,这对于诊断程序的性能是有很大的帮助的,起到事半功倍的作用,今天我就来谈用mvc开 发项目的调试和性能监控.EF框架 ...
- C#部分方法定义
C#部分方法定义 部分类也可以定义部分方法.部分方法在部分类中定义,但没有方法体,在另一个部分类中执行.在这两个部分类中,都要使用partial关键字. public partial class My ...
- UITabBarController自定义一
UITabBarController自定义一 首先在Appdelegate.m文件中将UITabBarController的子类设置为rootViewController,并设置其viewContro ...