0

corecustomer、およびadminという angularjs モジュールがあるとします。customeradminの両方にcoreが含まれています。両方のモジュールのサイトで、コントローラー (HeaderController) を持つ同じヘッダーを使用する必要があります。ユーザーが顧客モジュールに裏打ちされたサイトにログインすると、コアモジュールのユーザー情報で定数を作成します。customerモジュール内のどこに行っても、その定数にはそこに配置したデータがあります。管理モジュールをサポートするサイトに移動するためのリンクがあり、管理者からのユーザー情報を使用してその定数にアクセスできるようにしたい(HeaderController 上)。以下に、私のコードのスニペットを示します。現在、顧客のすべてが機能していますが、管理者に移動すると、次のようになります。

エラー: [$injector:unpr] 不明なプロバイダー: currentUserProvider <- currentUser <- HeaderController

顧客Index.cshtml

@{
ViewBag.Title = "Customer";
Layout = "~/Areas/Institutional/Views/Customer/_SiteLayout.cshtml";
}
<br />
<div>
    <ng-view></ng-view>
</div>


@section Scripts {
<script type="text/javascript">
    angular.module('core').constant('currentUser', @Html.Raw(Json.Encode(Model.Data)));
</script>
}

管理者用モジュール

(function () {
'use strict';

angular
    .module('admin',
        ['core']);

})();

お客様向けモジュール

(function () {
'use strict';

angular
    .module('customer',
        ['core']);

})();

currentUser (定数)にアクセスする必要があるコントローラー

(function() {
    angular
        .module('core')
        .controller('HeaderController', ['$scope', '$rootScope','currentUser',
        function ($scope, $rootScope, currentUser) {
            $scope.currentUser = currentUser;  
        }
    ]);
})();
4

3 に答える 3

1

私が見る限り、SPA を .NET プロジェクトに埋め込んでいるようです。angularでasp.net mvcルーティングを使用すると、フレームワークがビューをロードするたびにテンプレートがリロードされ、ng-appもリロードされるため、JBNizetとしてページを更新する場合と同様に、アプリのすべてのデータが失われます言及された。

私が考えることができる解決策は、localStorage やキャッシュ サービスなどを使用して、必要なデータを「メモリ」に保持することです。

于 2015-05-16T02:42:53.717 に答える
1

@JB-Nizet の回答に加えて、ローカル ストレージ、セッション ストレージ、Cookie など、別の方法でデータを永続化する必要があります。シナリオに最も適したもの

于 2015-03-13T20:52:32.560 に答える
1

各サイトには独自のコア モジュールがあり、管理者サイト ページではなく顧客サイト ページでのみ定数を定義したため、そこで定数を使用することはできません。

たとえそうであったとしても、HTML ページをロードするたびに、前のページによってメモリに保存されたものはすべて消えてしまいます。したがって、あるサイトのコードがインメモリ定数を別のサイトと共有する方法はありません。顧客サイトにとどまってページを更新しても、定数の以前の値が失われます。Angular アプリケーションはゼロから開始されます。

于 2015-03-13T20:22:39.267 に答える