• --@angularJS--指令与指令之间的交互demo


    1、index.html:

    <!DOCTYPE HTML>
    <html ng-app="app">
    <head>
        <title>custom-directive</title>
        <meta charset="utf-8">    
        <link rel="stylesheet" href="../css/bootstrap.css">
        <script src="../js/angular.js"></script>
        <!--<script src="../js/jquery-1.10.2.min.js.js"></script>-->
    </head>
    <body>
    <!-- 下面是指令与指令间的交互demo. -->
    <div class="container">
        <div class="row">
            <div class="col-md-3"><superman strength>动感超人+力量</superman></div>
        </div>
        <div class="row">
            <div class="col-md-3"><superman strength speed>动感超人+力量+速度</superman></div>
        </div>
        <div class="row">
            <div class="col-md-3"><superman strength speed light>动感超人+力量+速度+发光</superman></div>
        </div>
    </div>

    <script src="./directive-directive.js"></script>
    </body>
    </html>

    2、directive-directive.js:

    var myModule = angular.module("app",[]);

    myModule.directive('superman',function(){
        return {
            restrict:'AE',
            scope:{},
            controller:function($scope){
                $scope.abilities = [];        //定义能力集合
                this.addstrength = function(){//指令中的controller是一个公开暴露的api接口,一般是供后面定义该标签内的属性指令调用执行的
                    $scope.abilities.push("strength");
                };
                this.addspeed = function(){
                    $scope.abilities.push("speed");
                };
                this.addlight = function(){
                    $scope.abilities.push("light");
                };
            },
            link:function(scope,element,attrs){//link里面可以操纵DOM元素本身以及元素属性还有全局scope作用域内的方法
                element.addClass('btn btn-primary');
                element.bind("mouseenter", function() {
                    console.log(scope.abilities);
                });
            }
        }
    }).directive('strength',function(){//一个属性代表一个值
        return {//restrict:这里不写默认的是属性指令
            require:'^superman',//依赖superman指令,并在link方法中注入第四个参数supermanCtrl,即superman的控制器参数,并通过该参数调用控制器里面的暴露方法
            link:function(scope,element,attrs,supermanCtrl){
                supermanCtrl.addstrength();
            }
        }
    }).directive('speed',function(){
        return {
            require:'^superman',
            link:function(scope,element,attrs,supermanCtrl){
                supermanCtrl.addspeed();
            }
        }
    }).directive('light',function(){
        return {
            require:'^superman',
            link:function(scope,element,attrs,supermanCtrl){
                supermanCtrl.addlight();
            }
        }
    });

  • 相关阅读:
    Linux下php安装
    apache的安装
    线性dp
    蓝桥杯 算法训练 文章翻转
    蓝桥杯 算法训练 连通块
    Distributed Transaction Coordinator 无法启动
    WCF使用小结:(1)WCF接收HTTP POST数据的处理方法
    删除空文件夹 清除CS扩展名文件 bat
    Linux下如何修改ip地址
    is not in the sudoers file 问题解决【转载】
  • 原文地址:https://www.cnblogs.com/koleyang/p/4515128.html
Copyright © 2020-2023  润新知