angularJS 中$attrs方法使用指南

这里给大家分享的是一个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的使用有了新的认识,希望大家能够喜欢本文。

(0)

相关推荐

  • jQuery使用attr()方法同时设置多个属性值用法实例

    本文实例讲述了jQuery使用attr()方法同时设置多个属性值的用法.分享给大家供大家参考.具体如下: 下面这个演示例子可通过点击按钮实现修改链接与提示的功能. <!DOCTYPE html> <html> <head> <script src="js/jquery.min.js"> </script> <script> $(document).ready(function(){ $("button&q

  • jQuery中attr()与prop()函数用法实例详解(附用法区别)

    本文实例讲述了jQuery中attr()与prop()函数用法.分享给大家供大家参考,具体如下: 一.jQuery的attr()方法 jquery中用attr()方法来获取和设置元素属性,attr是attribute(属性)的缩写,在jQuery DOM操作中会经常用到attr(),attr()有4个表达式. 1. attr(属性名) //获取属性的值(取得第一个匹配元素的属性值.通过这个方法可以方便地从第一个匹配元素中获取一个属性的值.如果元素没有相应属性,则返回 undefined ) 2.

  • jQuery中 prop() attr()使用详解

    对于HTML元素本身就带有的固有属性,在处理时,使用prop方法. 对于HTML元素我们自己自定义的DOM属性,在处理时,使用attr方法. 在高版本的jquery引入prop方法后,什么时候该用prop?什么时候用attr?它们两个之间有什么区别?这些问题就出现了. 关于它们两个的区别,网上的答案很多.这里谈谈我的心得,我的心得很简单: 对于HTML元素本身就带有的固有属性,在处理时,使用prop方法. 对于HTML元素我们自己自定义的DOM属性,在处理时,使用attr方法. 上面的描述也许有

  • jQuery中 attr() 方法使用小结

    定义和用法 attr() 方法设置或返回被选元素的属性值. 根据该方法不同的参数,其工作方式也有所差异. 实例1 设置被选元素的属性和值. <html> <head> <script type="text/javascript" src="/jquery/jquery.js"></script> <script type="text/javascript"> $(document).re

  • jQuery中attr()方法用法实例

    本文实例讲述了jQuery中attr()方法用法.分享给大家供大家参考.具体分析如下: 此方法设置或返回匹配元素的属性值. attr()方法根据参数的不同,功能也不同. 语法结构一: 获取第一个匹配元素指定属性的属性值. 复制代码 代码如下: $(selector).attr(name) 参数列表: 参数 描述 name 定义要获取其值的属性名称. 实例代码: 复制代码 代码如下: <!DOCTYPE html> <html> <head> <meta chars

  • Andorid自定义attr的各种坑

    在开发Andorid应用程序中,经常会自定义View来实现各种各样炫酷的效果,在实现这吊炸天效果的同时,我们往往会定义很多attr属性,这样就可以在XML中配置我们想要的属性值,以下就是定义属性值可能遇到的各种坑. 大家都知道怎么定义attr属性,一般如下: <declare-styleable name="Sample"> <attr name="custom" format="string|reference" />

  • 详解Android自定义控件属性TypedArray以及attrs

    最近在研究android自定义控件属性,学到了TypedArray以及attrs.大家也可以结合<理解Android中的自定义属性>这篇文章进行学习,后续一篇还有应用. 1.attrs文件编写 <?xml version="1.0" encoding="utf-8"?> <resources> <attr name="titleText" format="string" /> &

  • angularJS 中$attrs方法使用指南

    这里给大家分享的是一个angularJS 中$attrs方法的使用示例: 复制代码 代码如下: <!doctype html> <html>     <head>         <meta charset="utf-8">         <title>             无标题文档         </title>         <script src="http://localhost

  • angularJS 中$scope方法使用指南

    复制代码 代码如下: <!doctype html> <html> <head> <meta charset="utf-8"> <title>无标题文档</title> </head> <script src="http://localhost:81/js/jquery.js"> </script> <script src="http://lo

  • AngularJS封装指令方法详解

    本文实例讲述了AngularJS封装指令方法.分享给大家供大家参考,具体如下: 引言:angularjs是一个中等重量级的前端开发框架 HTML是一门很好的为静态文本设计的语言,但要构建动态的web应用它就显的乏力了.通常,我们使用以下技术来解决静态网页技术在构建动态应用上的不足: 1.类库:类库是一类函数的集合,它能帮助你写web应用.这里起主导作用是你的代码,由你来决定何时使用类库.典型的类库,例如prototype.jQuery等. 2.框架:框架式一种特殊的.已经实现的web应用,你只需

  • AngularJS 2.0入门权威指南

    学习 Angular 2 当越来越多的 web app 使用 Angular 1构建的时候,更快更强大的 Angular 2 将会很快成为新的标准. Angular的新约定使得它更容易去学习.更快的去开发 app.通过本教程学习更快速.更强大的 Angular 版本. Angular 一个跨移动和桌面的框架 快速开始 本指南指导你如何构建一个简单 Angular app. 可以使用typescript/ JavaScript / Dart任意一种语言来编写Angular app,本教程采用Jav

  • AngularJS中run方法的巧妙运用

    前言 AngularJS是google在维护,其在国外已经十分火热,可是国内的使用情况却有不小的差距,参考文献/网络文章也很匮乏.网上关于AngularJS中run方法的介绍也比较少,本文就主要总结了关于AngularJS中run方法的巧妙运用,感兴趣的朋友们可以一起来学习学习. 一.浏览器判断 在angular做微信应用的时候,有时候我们也想把相同一份代码运行在非微信的浏览器上,这时候我们可以在angular的run上写点东西实现~ 例如asw.run函数里执行定义一个$rootScope.i

  • 9种改善AngularJS性能的方法

    AngularJS 是目前使用非常广泛的 web app 应用框架,随着它的受欢迎程度持续上升 ,期待已久的AngularJS 4.0 诞生了.尽管已经做了很多优化,但几乎每个 Angular 专家仍然在处理使用 AngularJS 中出现的各种各样的问题. 目前,企业使用Web技术用在他们各自项目上,在线业务因此受到了极大影响.因此,有必要深入挖掘影响企业成长的各种因素. 但是,有可能不正确地使用 AngularJS 方法会影响你的应用程序在市场上的排名,因此 AngularJS 性能优化成为

  • 快速解决angularJS中用post方法时后台拿不到值的问题

    用angularJS中的$http服务碰到了一个问题:运用$http.post方法向后台传递数据时,后台的php页面获取不到data参数传过来的值. 不论是这种姿势: $http.post( "1.php", { id: 1 }).success(function (data) { console.log(data); }); 还是这种姿势: $http({ method: 'POST', url: '1.php', data: { id: 1 } }).success(functio

  • angularJS中$apply()方法详解

    对于一个在前端属于纯新手的我来说,Javascript都还是一知半解,要想直接上手angular JS,遇到的阻力还真是不少.不过我相信,只要下功夫,即使是反人类的设计也不是什么大的问题. Okay,废话不多说.为了弄明白angular JS为何物,我先是从Scope开始.那么什么是Scope呢?借用官方文档的一段话: 复制代码 代码如下: "scope is an object that refers to the application model. It is an execution c

  • 深入理解Angularjs中$http.post与$.post

    摘要 在angularjs发送post请求的时候,确实很困惑,在传递json数据的时候,总会遇到在服务端无法接受到参数的情况,这里有必要与$.post进行比较学习一下. 一个例子 这里模拟登录的一个场景,post用户名与密码,服务端接受账户并直接返回到客户端不做其它业务处理. 使用angularjs版本 /* AngularJS v1.2.15 (c) 2010-2014 Google, Inc. http://angularjs.org License: MIT */ 服务端 public c

  • 使用Chrome浏览器调试AngularJS应用的方法

    当我们构建AngularJS应用时,通过浏览器(如Chrome,Firefox和IE)的JavaScript控制台访问应用中隐藏的数据和服务总会有些困难.下面是一些简单的技巧可以帮助我们通过Javascript控制台来查看或者控制正在运行的Angular应用,使得应用可以比较容易进行测试,修改,甚至实时的修改我们的Angular应用: 1: 访问作用域 通过一行简单的JS程序访问页面中任何作用域(甚至是隔离的作用域!): > angular.element(targetNode).scope()

随机推荐