angularJS 中$attrs方法使用指南


Posted in Javascript onFebruary 09, 2015

这里给大家分享的是一个angularJS 中$attrs方法的使用示例:

<!doctype html>

<html>

    <head>

        <meta charset="utf-8">

        <title>

            无标题文档

        </title>

        <script src="http://localhost:81/js/jquery.js">

        </script>

        <script src="http://localhost:81/js/angular.min.js">

        </script>

    </head>

    <body ng-app="Demo">

        <div a>

            a_directive

        </div>

        <div ng-controller="TestCtrl">

            <h1 t>

                原始内容

            </h1>

            <h2 t2>

                原始内容

            </h2>

            <h3 t3="hiphop" title2="{{name}}">

                原始内容

            </h3>

            <div compile></div>

            <div>

                <test a="{{ a }}" b c="xxx"></test>

                <button ng-click="a=a+1">

                    修改

                </button>

            </div>

            <te a="1" ys-a="123" ng-click="show(1)">这里</te>

        </div>

        <script>

            var app = angular.module('Demo', [], angular.noop);

            app.controller("TestCtrl",

            function($scope) {

                $scope.name = "qihao";

            });

            app.directive("t",

            function() {

                return {

                    controller : function($scope){$scope.name = "qq"},

                    template : "<div>test:implementToParent{{name}}</div>",

                    replace : true,

                    scope : true     //作用域是继承的,默认就是继承的

                }

            });

            app.directive("t2",

            function() {

                return {

                    controller : function($scope){$scope.name = "nono"},

                    template : "<div>test:implementToParent{{name}}</div>",

                    replace : true,

                    restrict : "AE"

                }

            });

            app.directive("t3",

            function() {

                return {

                    template : "<div>test:implementToParent_titleIs:{{title}}<br>title2Is:{{title2}}</div>",

                    replace : true,

                    restrict : "AE",

                    scope : {

                        title : "@t3",

                        title2 : "@title2"

                    }

                }

            });

            app.directive('a',

            function() {

                var func = function() {

                    console.log('compile');

                    return function() {

                        console.log('link');

                    }

                }

                var controller = function($scope, $element, $attrs, $transclude) {

                    //$transclude :是指令标签的复制体

                    console.log('controller');

                    console.log($scope);

                    console.log($transclude);

                    //$transclude接受两个参数,你可以对这个克隆的元素进行操作,

                    var node = $transclude(function(clone_element, scope) {

                        $element.append(clone_element);

                        $element.append("<span>spanTag___</span>");

                        console.log(clone_element);

                        console.log('--');

                        console.log(scope);

                    });

                    console.log(node);

                }

                return {

                    compile: func,

                    template: "<h1 ng-transclude></h1>",

                    controller: controller,

                    transclude: true,

                    restrict: 'AE'

                }

            });

            app.directive('compile',function() {

                var func = function() {

                    console.log('a compile');

                    return {

                        pre: function() {

                            console.log('a link pre')

                        },

                        post: function() {

                            console.log('a link post')

                        },

                    }

                }

                return {

                    restrict : "AE",

                    compile : func

                }

            })

              app.directive('test', function(){

                var func = function($element, $attrs){

                  console.log($attrs);

                  $attrs.$observe('a', function(new_v){

                    console.log(new_v);

                  });

                }

                return {compile: func,

                        restrict: 'E'}

              });

              app.controller('TestCtrl', function($scope){

                $scope.a = 123;

              });

              app.directive('te', function(){

                var func = function($scope,$element, $attrs,$ctrl){

                    console.log($ctrl)

                    //$attrs.$set. 给这个属性设置b,值为ooo,就是这样

                  $attrs.$set('b', 'ooo');

                  $attrs.$set('a-b', '11');

                  //这个还有点不懂啊 //第二个参数值

                  $attrs.$set('c-d', '11', true, 'c_d');

                  console.log($attrs);

                }

                return {

                        compile: function(){

                            return func

                        },

                        restrict: 'E'

                    }

              });

              app.controller('TestCtrl', function($scope){

                $scope.show = function(v){console.log(v);}

              });

        </script>

    </body>

</html>

本文内容就到这里了,希望大家能对angularJS 中$attrs的使用有了新的认识,希望大家能够喜欢本文。

Javascript 相关文章推荐
Dom 学习总结以及实例的使用介绍
Apr 24 Javascript
Jquery网页出现的乱码问题的三种解决方法
Jun 30 Javascript
页面图片浮动左右滑动效果的简单实现案例
Feb 10 Javascript
JQuery中使用on方法绑定hover事件实例
Dec 09 Javascript
node.js中的fs.appendFile方法使用说明
Dec 17 Javascript
jQuery检测返回值的数据类型
Jul 13 Javascript
详解AngularJS中的filter过滤器用法
Jan 04 Javascript
一波JavaScript日期判断脚本分享
Mar 06 Javascript
BootStrap入门教程(三)之响应式原理
Sep 19 Javascript
整理关于Bootstrap过渡动画的慕课笔记
Mar 29 Javascript
vue cli使用绝对路径引用图片问题的解决
Dec 06 Javascript
angular4应用中输入的最小值和最大值的方法
May 17 Javascript
JavaScript实现获取dom中class的方法
Feb 09 #Javascript
angularJS 中input示例分享
Feb 09 #Javascript
angularJS提交表单(form)
Feb 09 #Javascript
JavaScript实现16进制颜色值转RGB的方法
Feb 09 #Javascript
js选项卡的实现方法
Feb 09 #Javascript
js实现checkbox全选、不选与反选的方法
Feb 09 #Javascript
angularJS中router的使用指南
Feb 09 #Javascript
You might like
Laravel 5框架学习之数据库迁移(Migrations)
2015/04/08 PHP
php函数连续调用实例分析
2015/07/30 PHP
微信接口生成带参数的二维码
2017/07/31 PHP
Laravel5.7 数据库操作迁移的实现方法
2019/04/12 PHP
Javascript Memoizer浅析
2014/10/16 Javascript
AngularJS基础知识笔记之过滤器
2015/05/10 Javascript
基于jQuery全屏焦点图左右切换插件responsiveslides
2015/09/07 Javascript
js实现文本框输入文字个数限制代码
2015/12/25 Javascript
实例讲解jquery与json的结合
2016/01/07 Javascript
深入浅析JavaScript函数前面的加号和叹号
2016/07/09 Javascript
webpack配置的最佳实践分享
2017/04/21 Javascript
javaScript实现滚动条事件详解
2020/03/24 Javascript
Es6 Generator函数详细解析
2018/02/24 Javascript
javascript深拷贝、浅拷贝和循环引用深入理解
2018/05/27 Javascript
javascript定时器的简单应用示例【控制方块移动】
2019/06/17 Javascript
解决vue使用vant轮播组件swipe + flex时文字抖动问题
2021/01/07 Vue.js
[03:37]2014DOTA2国际邀请赛 主赛事第一日胜者组TOPPLAY
2014/07/19 DOTA
[40:56]2018DOTA2亚洲邀请赛 3.31 小组赛 A组 Liquid vs TNC
2018/04/01 DOTA
Python常用模块介绍
2014/11/21 Python
Python运算符重载用法实例
2015/05/28 Python
Python使用tablib生成excel文件的简单实现方法
2016/03/16 Python
python3下实现搜狗AI API的代码示例
2018/04/10 Python
Python绘制频率分布直方图的示例
2019/07/08 Python
用Python爬取QQ音乐评论并制成词云图的实例
2019/08/24 Python
详解Python中的文件操作
2021/01/14 Python
CSS超出文本指定宽度用省略号代替和文本不换行
2016/05/05 HTML / CSS
利用Bootstrap实现漂亮简洁的CSS3价格表实例源码
2017/03/02 HTML / CSS
日本最大的药妆连锁店:Matsukiyo松本清药妆店
2017/11/23 全球购物
Tommy Hilfiger美国官网:美国高端休闲领导品牌
2019/01/14 全球购物
药学专业大学生自荐信
2013/09/28 职场文书
制衣厂各岗位职责
2013/12/02 职场文书
大四本科生的自我评价
2013/12/30 职场文书
药剂专业毕业生求职信
2014/06/24 职场文书
焦裕禄观后感
2015/06/03 职场文书
Python自动化工具之实现Excel转Markdown表格
2022/04/08 Python
MySQL中TIMESTAMP类型返回日期时间数据中带有T的解决
2022/12/24 MySQL