angularJS:如何在父作用域中调用子作用域函数

前端之家收集整理的这篇文章主要介绍了angularJS:如何在父作用域中调用子作用域函数前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
如何从父范围调用在子范围中定义的方法
function ParentCntl() {
    // I want to call the $scope.get here
}

function ChildCntl($scope) {
    $scope.get = function() {
        return "LOL";    
    }
}

http://jsfiddle.net/wUPdW/

你可以使用 $broadcast从父到子:
function ParentCntl($scope) {

    $scope.msg = "";
    $scope.get = function(){
        $scope.$broadcast ('someEvent');
        return  $scope.msg;        
    }
}

function ChildCntl($scope) {               
    $scope.$on('someEvent',function(e) {  
        $scope.$parent.msg = $scope.get();            
    });

    $scope.get = function(){
        return "LOL";    
    }
}

工作小提琴:http://jsfiddle.net/wUPdW/2/

更新:有另一个版本,较少耦合和更多的可测试:

function ParentCntl($scope) {
    $scope.msg = "";
    $scope.get = function(){
        $scope.$broadcast ('someEvent');
        return  $scope.msg;        
    }

    $scope.$on('pingBack',function(e,data) {  
        $scope.msg = data;        
    });
}

function ChildCntl($scope) {               
    $scope.$on('someEvent',function(e) {  
        $scope.$emit("pingBack",$scope.get());        
    });

    $scope.get = function(){
        return "LOL";    
    }
}

小提琴:http://jsfiddle.net/uypo360u/

猜你在找的Angularjs相关文章