2017-11-08 14 views
1

私はAngularJSを使ってWebアプリケーションを構築していますが、子から親ビューコントローラにデータを渡す際に問題があります。親コントローラに値を渡すにはどうすればよいですか?

ページの読み込み中に、サービス(ユーザー名など)からデータが取得されています。

この値をマスターページに渡したいのですが、現在マスターページコントローラーに値を渡すことができません。このため、私は自分のサービスから2回(各ページに1つずつ)データを要求しています。

この値を親ビューとどのように共有できますか?

+3

ので、何をしようとしたのですか?いくつかのコードを挿入します。 – DRPK

答えて

0

$ scope.yourVariableの代わりに$ rootScope.yourVariableを使用できます。

+1

できますが、できません。 –

0

ケース1:

使用子から親コントローラに値を渡す$emitイベント。 Read docs for more info

ケース2:

使用親から子コントローラに値を渡す$broadcastイベント。 Read docs for more info

$socpe.$broadcast("Some Value", $scope.someVar); 

となど、それレシーブ他のコントローラで:

$scope.$on("Some Value", function(event, value){ 
    console.log(value); 
}); 

ケース3:

使用$rootscope$broadcastイベントへのコントローラは兄弟である場合。

$rootscope.$broadcast("Some Value", $scope.someVar); 

、それレシーブ他のコントローラで:

$scope.$on("Some Value", function(event, value){ 
    console.log(value); 
}); 

例:私はあなたのサービスコールによって置き換えられます$timeoutを使用している例では

。変数は、タイムアウトコールで述べたように2秒後に更新されます。

angular 
 
    .module("app", []) 
 
    .controller("ParentCtrl", function($scope, $timeout){ 
 
    $scope.parentVar = "This var belogs to ParentCtrl"; 
 
    $scope.childSharedValue = "Waiting for ChildCtrl to pass value"; 
 
    
 
    $scope.$on("Child Value", function(event, value){ 
 
     $scope.childSharedValue = value; 
 
    }); 
 

 
    $timeout(function(){ 
 
     $scope.$broadcast("Parent Value", $scope.parentVar); 
 
    }, 2000); 
 
    }) 
 
    .controller("ChildCtrl", function($scope, $timeout){ 
 
    $scope.childVar = "This var belogs to ChildCtrl"; 
 
    $scope.parentSharedValue = "Waiting for ParentCtrl to pass value"; 
 
    
 
    $scope.$on("Parent Value", function(event, value){ 
 
     $scope.parentSharedValue = value; 
 
    }); 
 

 
    $timeout(function(){ 
 
     $scope.$emit("Child Value", $scope.childVar); 
 
    }, 2000); 
 
    })
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script> 
 
<div ng-app="app" ng-controller="ParentCtrl"> 
 
    Parent Value: {{ parentVar}}<br /> 
 
    Child Shared Value: {{ childSharedValue }}<br /><br /> 
 
    <div ng-controller="ChildCtrl"> 
 
    Child Value: {{ childVar}}<br /> 
 
    Parent Shared Value: {{ parentSharedValue }}<br /> 
 
    </div> 
 
</div>

関連する問題