AngularJS指令详解(2)—指令与控制器之间的交互

本节我们来看控制器与指令之间的交互

1.首先来看最简单的,在指令中调用父控制器的方法:

<div ng-controller="myController1">
</div>

app.controller('myController1',['$scope',function($scope){
       $scope.load=function(){
         console.log('正在加载数据......');
       }
    }]);
app.directive('myTest',function(){
        return{
            restrict:'E',
            link:function(scope,ele,attr){
                ele.bind('mouseenter',function(){
                    scope.load();
                })
            }
        }
    })

在第一节中,我们已经知道了如何在指令的scope参数中调用父控制器中的方法,这里的:

scope.load();

也可以写成:

scope.$apply('load()');

2.同一个指令,在动态调用多个父类控制器中的方法:

<div ng-controller="myController1" loadMore="load1()"</div>
<div ng-controller="myController2" loadMore="load2()"></div>

app.controller('myController1',['$scope',function($scope){
       $scope.load1=function(){
         console.log('正在加载数据......');
       }
    }]);
    app.controller('myController2',['$scope',function($scope){
       $scope.load2=function(){
        console.log('正在加载数据........');
       }
    }]);
    app.directive('myTest',function(){
        return{
            restrict:'E',
            link:function(scope,ele,attr){
                ele.bind('mouseenter',function(){
                    scope.$apply(attr.loadmore())
                })
            }
        }
    })

注意这里:

scope.$apply(attr.loadmore());

loadmore是小写,而在html中,属性是通过驼峰法则得到的。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值