2016-04-30 2 views
1

角度の新しいjsです。私の質問は、1つのコントローラを複数のページに分けて共有できるかどうかです。angularJSのページ間のアクセスコントローラ

私は私のサイトのテンプレートを持っています。今度は、角度jでコード化しようとしています。 私はhome.htmlとnew​​.htmlのような2ページを持っています

home.htmlは以下のようです。

<!DOCTYPE html> 
    <html> 
    <script src="http://ajax.googleapis.com/ajax/libs/angularjs/1.4.8/angular.min.js"></script> 

    <body> 

    <div ng-app="myApp" ng-controller="kkCtrl"> 
     <p>My first expression: {{ 5 + 5 }}</p> 

    <a herf="new.html" ng-click="getDatass('w')"> new</a> 
    </div 
    </body> 
    </html> 


<script> 
    var app = angular.module('myApp', []); 

    app.controller('kkCtrl',["$scope", "$http", function($scope, $http) { 
    $scope.getDatass= function(a){ 
      $scope.k= a; 
    } 
    }]) 
    </script> 

マイnew.htmlが

<div ng-controller="kkCtrl"> 
    <table> 
    <tr><td>kkk</td> 
    <td>lll</td> 
    </tr> 
    </table> 
    {{k}} 
    </div> 

私の質問は、私がhome.htmlの「新しい」リンクをクリックした場合、それはnew.htmlにリダイレクトすべきであり、それは 'の値を表示することが可能です$ scope.a 'new.htmlで...助けてください。

答えて

0

私は、ページ間でコントローラを共有するのが最良の方法だとは思わない、AngularJS。代わりに、各ビューには独自のコントローラが必要です。各ビューページ間でデータを渡す場合は、angular-ui-routerを使用してパラメータをui-srefに渡すことで達成できます。 AngularJSのベストプラクティスhereについてもっと読むことをお勧めします。 AngularJSで使用される最も良いスタイルガイドを提供します。

0

new.htmlのhome.htmlに設定されているスコープ変数にアクセスすることはできません。

任意の数のビューで同じコントローラを使用できます。しかし、新しいビューが作成されると、コントローラは$ scopeの新しいインスタンスで作成されます。

コントローラーが最初に読み込まれたかのように動作します。

問題を解決するには、角度サービスまたはファクトリを作成し、データ共有に使用できます。

0

各ビューには独自のコントローラが必要です。 「グローバル」関数/変数、つまりビュー(コントローラ)間で共有されるコードを使用する場合は、servicesのコンセプトを参照する必要があります。 k変数を保持するサービスを作成し、そのサービスを依存関係注入によって使用可能にします。

angular.module('myApp') 
    .factory('myService', function() { 

    //local variable or functions here 
    var local = true; 

    //variables and functions exposed to the outside 
    return { 
     k: 0 
    } 
}); 

は今kkCtrlのための依存関係としてmyServiceを含める:

app.controller('kkCtrl',["$scope", "$http", "myService", function($scope, $http, myService) { 

あなたは今、設定またはkを取得することができます。

$scope.getDatass= function(a){ 
    myService.k = a; 
} 
関連する問題