2017-09-13 20 views
0

私は2つのjsファイル、すなわちcollegeApp.jsとbranchApp.jsを持っています。私は、collegeApp.js ng-appと、branchApp.js ng-appの中にあるBranchController.jsの2つのControllerController.jsを持っています。1つのコントローラから別のng-appファイルのidに渡す

私のHTMLから別のページにリダイレクトしています。

は、ここに私のHTML

<li data-ng-click="getBranchByBranchId(branch.branchId); setBranchId(branch.branchId)"> 
    {{branch.branchName}} 
</li> 

このHTMLページはcollegeApp.js.After私はメソッドを呼び出していますし、そのコントローラは、次のようになりブランチ名をクリックしてです。

CollegeController.js

var CollegeController = function($scope, $rootScope, $http, $location, $route,CollegeService,$routeParams) { 

    $rootScope.pageTitle = $route.current.title; 

     $scope.getBranchId = function() { 
     CollegeService.getBranchId().then(function(response) { 
      $scope.branchId = response.data; 
     }); 
    } 

    $scope.setBranchId=function(branchId) { 
     CollegeService.setBranchId(branchId); 
    $rootScope.passBranchId = branchId; 
     window.location.href="./branch? 
     branchId='+$rootScope.passBranchId";//Here I am redirecting to branch page with id.// 
    } 
} 

分岐ページbranchApp.jsであり、コードの上にcollegeApp.jsです。 BranchController.jsで、前のページから送信されたbranchIdをキャッチしようとしています。

BranchController.js

var BranchController = function($scope, $rootScope, $http, $location, $route,BranchService,$routeParams) 
    { 
     $scope.branchId = $rootScope.passBranchId;//Here i am trying to get branchId// 
     console.log($scope.branchId);//I am getting undefined. 
    } 

私は彼らの$ rootScope、$ routeParams.Butどれも働いていない試みました。 私はbranchIdをcollegeAppからbranchAppに渡すことができる方法はありますか?または私は何かが不足していますか?

+0

サービスを使ってデータを共有することを提案するつもりでしたが、これは目的であるためですが、既にサービスを使用しています。ちょうど 'CollegeService'を' BranchController'に追加し、そこに 'CollegeService.getBranchId()'を呼び出すのはなぜですか? –

+0

BranchControllerのBranchController.Nowに依存関係としてCollegeServiceを追加しました。私は直接getBranchId()を呼び出すことができますか? –

+0

ええ、なぜ私は見ていない。コントローラ/ディレクティブ/コンポーネント間でロジック/データを共有できるようにするサービスの全体的なポイント。 –

答えて

0

最終的に解決策が見つかりました。この行を追加したところ、それが機能しました。

インサイドSchoolController.js

$scope.setBranchId=function(branchId) 
    { 
     window.localStorage.setItem("branchId", branchId); 
    } 

そしてBranchController.js

$scope.branchId = window.localStorage.getItem("branchId"); 

で、今私は、コントローラ内の任意の場所にIDを使用することができていますし、また私はcollegeApp.jsからIDを渡すことができていますbranchApp.js ng-apps。

0

あなたのページをリダイレクトするときに$location.path('/branch/' + branchId) さらにコントローラに$locationがすでにあります。

次に、あなたのURLのidを見つけるのに$routeParamsを使いたいと思うでしょう。ルートの設定は、のparamsを見つけるため

Updateは、あなたが内の複数のモジュール間で情報を共有したいと思ったことを私が実現しそう

$scope.branchId = $routeParams.branchId;

+0

$ location.path(branchId)をwindow.location.hrefに追加する必要がありますか? –

+0

@SachinHR $ location.pathはwindow.location.hrefを置き換えます。同じように動作しますが、$ locationはngRouteモジュールの一部です – teachtyler

+0

しかし、私はclickとsetDepartmentメソッドでgetおよびset departmentsを呼び出しています。私はwindow.location.hrefを使用しています。私はリダイレクトするためにapp.jsを使用していません –

0

のような値を取得し、この

$routeProvider 
    ... 
    .when('branch/:branchId', { 
     templateUrl: 'views/branches.html', 
     controller: 'BranchController' 
    }) 

のようになります。同じアプリケーション。このシナリオをテストするための完成したコードサンプルを示します。

+0

collegeApp.jsからbranchApp.jsにbranchIdを送信しようとしているため、複数のng-appsで動作しますか? –

+0

お互いに通信する必要がありますか?参考までに、1つのアプリは、独立したものを持つモジュールと同じ数だけ持つことができます。アプリケーションを完全に分離する必要がある場合は、分離が発生するはずです。 – Aviro

+0

Ok.But同じプロジェクト内に2つのng-appを使用しています。同じプロジェクトでこれら2つのng-apps間で通信することは不可能ですか? –

関連する問題