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 相关文章推荐
javascript 命名规则 变量命名规则
Feb 25 Javascript
json对象转字符串如何实现
Dec 02 Javascript
Jquery网页出现的乱码问题的三种解决方法
Jun 30 Javascript
js之ActiveX控件使用说明 new ActiveXObject()
Mar 03 Javascript
JavaScript高级程序设计(第三版)学习笔记1~5章
Mar 11 Javascript
微信页面倒计时代码(解决safari不兼容date的问题)
Dec 13 Javascript
JS封装通过className获取元素的函数示例
Dec 20 Javascript
Vue2.0实现组件数据的双向绑定问题
Mar 06 Javascript
js+canvas实现验证码功能
Sep 21 Javascript
WebGL学习教程之Three.js学习笔记(第一篇)
Apr 25 Javascript
vue父子组件的通信方法(实例详解)
Nov 10 Javascript
基于Vant UI框架实现时间段选择器
Dec 24 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
收音机指标测试方法及仪器
2021/03/01 无线电
php INI配置文件的解析实现分析
2011/01/04 PHP
PHP的PSR规范中文版
2013/09/28 PHP
Yii框架中sphinx索引配置方法解析
2016/10/18 PHP
PHP使用curl_multi实现并发请求的方法示例
2018/04/29 PHP
thinkphp5.1框架模板赋值与变量输出示例
2020/05/25 PHP
通过ifame指向的页面高度调整iframe的高度
2006/10/05 Javascript
js中的值类型和引用类型小结 文字说明与实例
2010/12/12 Javascript
JavaScript中为元素加上name属性的方法
2011/05/09 Javascript
jQuery获取浏览器中的分辨率实现代码
2013/04/23 Javascript
jquery 合并内容相同的单元格(示例代码)
2013/12/13 Javascript
JavaScript中的console.log()函数详细介绍
2014/12/29 Javascript
jQuery中toggleClass()方法用法实例
2015/01/05 Javascript
JS使用eval解析JSON的注意事项分析
2015/11/14 Javascript
JavaScript事件类型中UI事件详解
2016/01/14 Javascript
基于jQuery Ajax实现上传文件
2016/03/24 Javascript
微信小程序 wx.uploadFile在安卓手机上面the same task is working问题解决
2016/12/14 Javascript
bootstrap table使用入门基本用法
2017/05/24 Javascript
详解Vue学习笔记入门篇之组件的内容分发(slot)
2017/07/17 Javascript
Vue shopCart 组件开发详解
2018/01/26 Javascript
vue 中的keep-alive实例代码
2018/07/20 Javascript
JavaScript中变量提升与函数提升经典实例分析
2018/07/26 Javascript
vue使用codemirror的两种用法
2019/08/27 Javascript
Python中asyncore的用法实例
2014/09/29 Python
Django如何将URL映射到视图
2019/07/29 Python
PyQtGraph在pyqt中的应用及安装过程
2019/08/04 Python
利用Python代码实现一键抠背景功能
2019/12/29 Python
Python 实现Image和Ndarray互相转换
2020/02/19 Python
完美解决torch.cuda.is_available()一直返回False的玄学方法
2021/02/06 Python
婴儿鞋,独特的婴儿服装和配件:Zutano
2018/11/03 全球购物
暑期政治学习心得体会
2014/09/02 职场文书
家长会后的感想
2015/08/11 职场文书
2016年“七一建党节”广播稿
2015/12/18 职场文书
《灰雀》教学反思
2016/02/19 职场文书
Linux中文件的基本属性介绍
2022/06/01 Servers
Pytorch中expand()的使用(扩展某个维度)
2022/07/15 Python