7382

[code]

    myModule.controller('manager_information_controller', function($scope, member){
    
        //親画面から呼ばれる関数
        $scope.showModalForMemberInformation = function(){
    
            modal_manager.show();            
            $scope.test = "11";
        }
    
        //子（モーダル）画面から呼ばれる関数
        $scope.selectMembers = function(){
    
            modal_manager.hide();
            $scope.test = "22";
    
    }
    
    <!-- ページ --＞
    <ons-page id="manager_information" ng-controller="manager_information_controller">
    
    {{newGuest}}
    
    <ons-list-item modifier="chevron" ng-click="showModalForMember()">
    モーダルへ
    </ons-list-item>    
    
    </ons-page>
    
    <!-- モーダル -->
    <ons-modal var="modal_manager" ng-controller="manager_information_controller">
            <ons-button ng-click="selectMembers()">検索</ons-button>
    </ons-modal>
    
[/code]

親画面が子画面の値を見る方法が分からなくて、困っています。  
よろしくお願いします。


CC BY-SA 3.0
2015-03-01T10:34:35.020
7273
2015-03-03T15:10:49.230
2015-03-01T10:55:56.413
76
8615
question
monaca onsen-ui
親画面が子画面の値を見る方法


あるコントローラーからons-
modal中のコントローラーの値を見たいということで大丈夫でしょうか。あるコントローラーから別のコントローラーに値を渡したいのであれば、少なくとも方法は2つあります。

  * 一つはAngularJSのサービスを使って値を渡す方法です。あるサービスを作ってそのサービスを2つの両方のコントローラーにインジェクションします。1つ目のコントローラーで値を入力して、モーダル内のコントローラーで値を受け取ることができます。詳細は下の例をみてください。

詳細コード:

[code]

    //サービスを作ります。
    myApp.factory('SharedData', function () {
        return { example: 'example' };
    });
    
    //コントローラーを作ってサービスをインジェクションします。親画面
    myApp.controller('ParentScreenController', function( $scope, SharedData ){
        $scope.Data = SharedData;
    });
    
    //コントローラーを作ってサービスをインジェクションします。子画面   
    myApp.controller('ChildScreenController', function( $scope, SharedData ){
        $scope.Data = SharedData;
    });
    
[/code]

  * もう一つはイベントを発行して値を渡す方法です。 1つ目のコントローラーでイベントを発行することによって、他のコントローラーにそのイベントとともに値を渡すことができます。簡単ですが、例を用意しました(注意: $rootScopeを両方のコントローラーにインジェクションして下さい) 。

詳細:

[code]

    // イベントおよび値を発行するコントローラー 子画面
    myApp.controller('FirstController', function( $scope, SharedData, $rootScope ){
        $rootScope.$broadcast('updatingData', sharedData);
        alert('updatingDataイベントを発行しました!');
    });
    
    // イベントおよび値を受け取るコントローラー 親画面
    myApp.controller('SecondController', function( $scope, SharedData, $rootScope ){   
        $rootScope.$on('updatingData', function(event, sharedData) {
            alert('イベント受信完了!');
            $scope.sharedData = sharedData;
        });
    });
    
[/code]

お役に立てれば嬉しいです。


CC BY-SA 3.0
2015-03-03T10:26:38.837
7382
2015-03-03T15:10:49.230
2015-03-03T15:10:49.230
7871
7871
7273
answer