angularJS 中$attrs方法使用指南

 更新时间:2015年02月09日 10:00:42   投稿:hebedich  
这篇文章主要介绍了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的使用有了新的认识,希望大家能够喜欢本文。

相关文章

  • 详解在Angular项目中添加插件ng-bootstrap

    详解在Angular项目中添加插件ng-bootstrap

    这篇文章主要介绍了详解在 Angular 项目中添加插件 ng-bootstrap,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-07-07
  • AngularJS中$http使用的简单介绍

    AngularJS中$http使用的简单介绍

    在AngularJS中主要使用$http服务与远程http服务器交互,本篇文章主要介绍了AngularJS中$http使用的简单介绍,非常具有实用价值,需要的朋友可以参考下。
    2017-03-03
  • 深入学习AngularJS中数据的双向绑定机制

    深入学习AngularJS中数据的双向绑定机制

    这篇文章主要介绍了AngularJS中数据的双向绑定机制,双向绑定使得HTML中呈现的view与AngularJS中的数据一致,是Angular的重要特性之一,需要的朋友可以参考下
    2016-03-03
  • 详解Angular6学习笔记之主从组件

    详解Angular6学习笔记之主从组件

    这篇文章主要介绍了详解Angular6学习笔记之主从组件,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-09-09
  • AngularJS实现与Java Web服务器交互操作示例【附demo源码下载】

    AngularJS实现与Java Web服务器交互操作示例【附demo源码下载】

    这篇文章主要介绍了AngularJS实现与Java Web服务器交互操作的方法,结合实例形式较为详细的分析了AngularJS前台ajax提交与javascript后台处理的完整流程与实现技巧,并附带demo源码供读者下载参考,需要的朋友可以参考下
    2016-11-11
  • 在 Angular6 中使用 HTTP 请求服务端数据的步骤详解

    在 Angular6 中使用 HTTP 请求服务端数据的步骤详解

    本文分步骤给大家介绍了在 Angular6 中使用 HTTP 请求服务端数据的方法,本文给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下
    2018-08-08
  • 利用Angularjs和bootstrap实现购物车功能

    利用Angularjs和bootstrap实现购物车功能

    在学习了如何简单开始一个Angular程序之后,跟着网上的教程我也来实现一个购物车功能,为了减少页面样式设计我使用了bootstrap来偷懒,现在分享给大家,有需要的可以参考借鉴。
    2016-08-08
  • AngularJS 应用身份认证的技巧总结

    AngularJS 应用身份认证的技巧总结

    这篇文章主要介绍了AngularJS 应用身份认证的技巧总结,具有一定的参考价值,有需要的可以了解一下。
    2016-11-11
  • AngularJS初始化静态模板详解

    AngularJS初始化静态模板详解

    这篇文章主要为大家介绍了AngularJS初始化静态模板,AngularJS初始化静态模板有两种方式,一是通过ng-app来自动初始化模块,也可以通过angular.bootstrap(document, [module])手动启动应用,感兴趣的小伙伴们可以参考一下
    2016-01-01
  • Angular2 Service实现简单音乐播放器服务

    Angular2 Service实现简单音乐播放器服务

    本篇文章主要介绍了Angular2 Service实现简单音乐播放器服务 ,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-02-02

最新评论