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 相关文章推荐
jquery设置按钮停顿3秒不可用
Mar 07 Javascript
javaScript中两个等于号和三个等于号之间的区别介绍
Jun 27 Javascript
Angularjs CURD 详解及实例代码
Sep 14 Javascript
打造自己的jQuery插件入门教程
Sep 23 Javascript
从零开始学习Node.js系列教程四:多页面实现的数学运算示例
Apr 13 Javascript
vue-router路由参数刷新消失的问题解决方法
Jun 17 Javascript
vue源码解析之事件机制原理
Apr 21 Javascript
Javascript的console['']常用输入方法汇总
Apr 26 Javascript
微信小程序中时间戳和日期的相互转换问题
Jul 09 Javascript
JavaScript函数节流和函数去抖知识点学习
Jul 31 Javascript
axios封装,使用拦截器统一处理接口,超详细的教程(推荐)
May 02 Javascript
AJAX检测用户名是否存在的方法
Mar 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
360通用php防护代码(使用操作详解)
2013/06/18 PHP
PHP echo,print,printf,sprintf函数之间的区别与用法详解
2013/11/27 PHP
Linux下创建nginx脚本-start、stop、reload…
2014/08/03 PHP
[原创]IE view-source 无法查看看源码 JavaScript看网页源码
2009/07/19 Javascript
javascript call方法使用说明
2010/01/11 Javascript
js字母大小写转换实现方法总结
2013/11/13 Javascript
JavaScript声明变量时为什么要加var关键字
2014/09/29 Javascript
JavaScript实现的简单幂函数实例
2015/04/17 Javascript
asp.net中oracle 存储过程(图文)
2015/08/12 Javascript
jquery实现未经美化的简洁TAB菜单效果
2015/08/28 Javascript
jquery ajax双击div可直接修改div中的内容
2016/03/04 Javascript
详解JavaScript表单验证(E-mail 验证)
2016/03/31 Javascript
浅析Bootstrap验证控件的使用
2016/06/23 Javascript
Bootstrap 实现查询的完美方法
2016/10/26 Javascript
浅谈js基础数据类型和引用类型,深浅拷贝问题,以及内存分配问题
2017/09/02 Javascript
jQuery中的for循环var与let的区别
2018/04/21 jQuery
vue router带参数页面刷新或回退参数消失的解决方法
2019/02/27 Javascript
jQuery中each和js中forEach的区别分析
2019/02/27 jQuery
vue-cli项目使用mock数据的方法(借助express)
2019/04/15 Javascript
bootstrap-table formatter 使用vue组件的方法
2019/05/09 Javascript
js实现简单的打印表格
2020/01/15 Javascript
何时/使用 Vue3 render 函数的教程详解
2020/07/25 Javascript
本地文件上传到七牛云服务器示例(七牛云存储)
2014/01/11 Python
python画蝴蝶曲线图的实例
2019/11/21 Python
python文件排序的方法总结
2020/09/13 Python
python 装饰器重要在哪
2021/02/14 Python
印尼披萨外送专家:Domino’s Pizza印尼
2017/12/28 全球购物
美国医疗用品、医疗设备和家庭保健用品商店:Medical Supply Depot
2018/07/08 全球购物
澳大利亚墨尔本的在线时装店:LORETA
2018/09/14 全球购物
Antonioli美国在线商店:时尚前卫奢华
2019/07/29 全球购物
美国知名眼镜网站:Target Optical
2020/04/04 全球购物
国贸专业自荐信范文
2014/03/02 职场文书
结婚通知短信大全
2015/04/17 职场文书
《艾尔登法环》发布最新「战技」宣传片
2022/04/03 其他游戏
python在package下继续嵌套一个package
2022/04/14 Python
MySQL去除密码登录告警的方法
2022/04/20 MySQL