3

私は自分のページのコントローラーであるコントローラーを持っていますが、AppLevelコントローラー、つまりすべてのページからアクセスできるものを使用できるかどうか疑問に思っていました...したがって、実際には各ページに複数のコントローラーが割り当てられます。

おそらくサービスでこれを実行してサービスを注入できることはわかっていますが、割り当て可能なある種のアプリレベルコントローラーを望んでいました。

これが可能であれば、2 人の間でどのように通信しますか? 依存性注入を使用すると仮定し、applevel コントローラーをメインページに渡すだけですか?

誰でもこれについて考えがありますか?

ありがとう

4

2 に答える 2

1

Angular に子コントローラーがある場合、それは親スコープから継承されます。したがって、一部の子孫コントローラーにない関数を含む最上位コントローラーが 1 つある場合、最上位関数 (またはスコープ オブジェクト) が参照されます。子コントローラーの 1 つが関数 (またはスコープのプロパティ) のローカル バージョンを定義する場合、親コントローラーから継承されなくなります。

フィドル: http://jsfiddle.net/Y9yEQ/

HTML

<div ng-app="myApp" ng-controller="TopLevelCtrl">
    <button ng-click="testing()">Yo top level!</button>
    <button ng-click="testing2()">Yo top level 2!</button>
    <div ng-controller="ChildCtrl">
        <button ng-click="testing()">Yo child!</button>
        <button ng-click="testing2()">Yo child2!</button>
    </div>
</div>

JS

angular.module("myApp",[]).controller("TopLevelCtrl", function($scope){
    $scope.testing = function() {
        alert("just testing");
    }
    $scope.testing2 = function() {
        alert("just testing parent");
    }
}).controller("ChildCtrl", function($scope){
    $scope.testing2 = function() {
        alert("just testing child");
    }
})

複数のコントローラー間で一部のデータを共有する必要がある場合 (ビューが追加/削除されると、ビューをサポートするためにコントローラー インスタンスが作成または破棄される可能性があるため)、サービスを使用する必要があります。コントローラーに厳密な構造がある場合は、$emit でイベントをスコープにバブリングしたり、$broadcast でスコープを介してイベントを送信したりできます。

于 2013-07-19T03:31:11.450 に答える