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 相关文章推荐
js静态作用域的功能。
Dec 25 Javascript
一个简单的js动画效果代码
Jul 20 Javascript
一款由jquery实现的整屏切换特效
Sep 15 Javascript
Javascript 数组排序详解
Oct 22 Javascript
jQuery实现转动随机数抽奖效果的方法
May 21 Javascript
jQuery实现鼠标划过添加和删除class的方法
Jun 26 Javascript
基于JavaScript如何实现ajax调用后台定义的方法
Dec 29 Javascript
node.js中module.exports与exports用法上的区别
Sep 02 Javascript
canvas实现动态小球重叠效果
Feb 06 Javascript
浅谈angular.copy() 深拷贝
Sep 14 Javascript
JavaScript实现正则去除a标签并保留内容的方法【测试可用】
Jul 18 Javascript
Node 搭建一个静态资源服务器的实现
May 20 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
PHP 高手之路(一)
2006/10/09 PHP
php 图片上传类代码
2009/07/17 PHP
php去除重复字的实现代码
2011/09/16 PHP
ThinkPHP页面跳转success与error方法概述
2014/06/25 PHP
thinkphp分页集成实例
2017/07/24 PHP
PHP+Oracle本地开发环境搭建方法详解
2019/04/01 PHP
jQuery autocomplete插件修改
2009/04/17 Javascript
关于js获取radio和select的属性并控制的代码
2011/05/12 Javascript
Three.js源码阅读笔记(基础的核心Core对象)
2012/12/27 Javascript
javascript陷阱 一不小心你就中招了(字符运算)
2013/11/10 Javascript
jquery列表拖动排列(由项目提取相当好用)
2014/06/17 Javascript
JavaScript中getUTCSeconds()方法的使用详解
2015/06/11 Javascript
使用Raygun来自动追踪AngularJS中的异常
2015/06/23 Javascript
JavaScript日期对象(Date)基本用法示例
2017/01/18 Javascript
详解Vue 事件修饰符capture 的使用
2017/12/29 Javascript
一个简单的node.js界面实现方法
2018/06/01 Javascript
Vue动态面包屑功能的实现方法
2019/07/01 Javascript
nodejs的安装使用与npm的介绍
2019/09/11 NodeJs
浅谈微信小程序列表埋点曝光指南
2019/10/15 Javascript
微信小程序tabBar设置实例解析
2019/11/14 Javascript
JS实现页面鼠标点击出现图片特效
2020/08/19 Javascript
vue 使用 v-model 双向绑定父子组件的值遇见的问题及解决方案
2021/03/01 Vue.js
Python的几个高级语法概念浅析(lambda表达式闭包装饰器)
2016/05/28 Python
Python列表切片用法示例
2017/04/19 Python
Django实现全文检索的方法(支持中文)
2018/05/14 Python
numpy 声明空数组详解
2019/12/05 Python
Python识别html主要文本框过程解析
2020/02/18 Python
HTML5所有标签汇总及标签意义解释
2015/03/12 HTML / CSS
可打印的优惠券、杂货和优惠券代码:Coupons.com
2018/06/12 全球购物
毕业生就业推荐表自我鉴定
2014/03/20 职场文书
先进班组材料范文
2014/12/25 职场文书
2015年幼儿园保育工作总结
2015/05/12 职场文书
中学团支部工作总结
2015/08/13 职场文书
2015年幼儿园师德师风建设工作总结
2015/10/23 职场文书
2016年清明节红领巾广播稿
2015/12/17 职场文书
ElementUI实现el-form表单重置功能按钮
2021/07/21 Javascript