如何调用一个函数从控制器指令范围 [英] How to call a function on a directive scope from the controller

查看:102
本文介绍了如何调用一个函数从控制器指令范围的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我已经搜查所有在互联网上并不能找到一个解决办法请大家帮忙!

 指令('菜单',函数(){
    返回{
        链接:功能(范围,元素,ATTRS){
            scope.foo =功能(){
            警报('测试!');
            }
        },
        控制器:函数($范围){
            $ scope.foo();
        }
    }
});


解决方案

延迟调用富()使用 $ evalAsync()

 控制器:功能($范围){
    $范围。$ evalAsync(函数(){
        $ scope.foo();
        的console.log($范围内);
    });
}

<大骨节病> 小提琴

您也可以使用 $超时()而不是 $ evalAsync()。两者都允许链接功能首先执行。

I've searched all over the internet and cannot find a solution please help!

directive('menu',function(){
    return{
        link : function(scope,element,attrs){
            scope.foo = function(){
            alert('test!');
            }
        },
        controller : function($scope){
            $scope.foo();
        }
    }
});

解决方案

Delay the call to foo() using $evalAsync():

controller : function($scope){
    $scope.$evalAsync(function() {
        $scope.foo();
        console.log($scope);
    });
}

fiddle

You could also use $timeout() instead of $evalAsync(). Both allow the link function to execute first.

这篇关于如何调用一个函数从控制器指令范围的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆