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的使用有了新的认识,希望大家能够喜欢本文。

相关文章

  • 使用AngularJS来实现HTML页面嵌套的方法

    使用AngularJS来实现HTML页面嵌套的方法

    这篇文章主要介绍了使用AngularJS来实现HTML页面嵌套的方法,主要用到了AngularJS中的ng-include指令,需要的朋友可以参考下
    2015-06-06
  • angular实现spa单页面应用实例

    angular实现spa单页面应用实例

    本篇文章主要介绍了angular实现spa单页面应用实例,小本篇文章是对单页面的一个简单的基本逻辑操作,这个方法可以搭建基本的单页面的逻辑结构。一起跟随小编过来看看吧
    2017-07-07
  • 浅谈Angular中ngModel的$render

    浅谈Angular中ngModel的$render

    下面小编就为大家带来一篇浅谈Angular中ngModel的$render。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2016-10-10
  • AngularJS基础 ng-cut 指令介绍及简单示例

    AngularJS基础 ng-cut 指令介绍及简单示例

    本文主要介绍AngularJS ng-cut 指令,这里对ng-cut指令的基础资料进行了整理,和详细介绍,并附上代码示例和实现效果图,学习AngularJS 指令的朋友可以参考下
    2016-08-08
  • angular.js + require.js构建模块化单页面应用的方法步骤

    angular.js + require.js构建模块化单页面应用的方法步骤

    这篇文章主要给大家介绍了关于利用angular.js + require.js构建模块化单页面应用的方法步骤,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面来一起看看吧。
    2017-07-07
  • Angular4 组件通讯方法大全(推荐)

    Angular4 组件通讯方法大全(推荐)

    这篇文章主要介绍了Angular4 组件通讯方法大全(推荐),小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-07-07
  • 详解AngularJs ui-router 路由的简单介绍

    详解AngularJs ui-router 路由的简单介绍

    本篇文章主要介绍了AngularJs ui-router 路由的简单介绍。简单明了的说明了ngRoute和ui-router的区别和用法,有兴趣的可以了解一下
    2017-04-04
  • 使用ionic播放轮询广告的实现方法(必看)

    使用ionic播放轮询广告的实现方法(必看)

    下面小编就为大家带来一篇使用ionic播放轮询广告的实现方法(必看)。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-04-04
  • AngularJS ui-router刷新子页面路由的方法

    AngularJS ui-router刷新子页面路由的方法

    这篇文章主要介绍了AngularJS ui-router刷新子页面路由的方法,网上虽然有很多种方法,但是都不适合小编,今天小编给大家分享一个还不错的方法,需要的朋友可以参考下
    2018-07-07
  • 利用Angularjs中模块ui-route管理状态的方法

    利用Angularjs中模块ui-route管理状态的方法

    这篇文章主要给大家介绍了如何用Angularjs中的模板ui-route来管理状态的方法,文中通过示例代码介绍的很详细,相信对大家的理解和学习具有一定的参考借鉴价值,有需要的朋友可以一起来学习学习。
    2016-12-12

最新评论