1. ホーム
  2. angularjs

[解決済み] angularJS: 親スコープから子スコープの関数を呼び出す方法

2023-01-27 16:46:22

質問

子スコープで定義されたメソッドを、親スコープから呼び出すにはどうしたらよいでしょうか。

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/