私はコードから始めます:
when('/admin', {
templateUrl: 'partials/admin/layout.html',
controller: AdminCtrl
})
when('/admin/products', {
templateUrl: '????',
controller: AdminProductsCtrl
})
テンプレート「ツリー」:
index.html ---> <div ng-view/>
---layout.html ---> <div ng-include=menu/> and <div ng-include=body/>
------menu.html
------products.html
実際に私はこれを行います:
function AdminCtrl($scope) {
$scope.menu = 'partials/admin/menu.html';
}
function AdminProductsCtrl($scope) {
$scope.menu = 'partials/admin/menu.html';
$scope.body = 'partials/admin/products/index.html';
}
要点: '????' に何を入れたか、layout.html を入れると問題なく動作しますが、ng-include=body を単に「更新」するのが好きです。Angularjs に関する私の概念は間違っていると思います。
その他の問題は、AdminProductsCtrl が layout.html の「制御権を取得」したときに、AdminCtrl $scope が見つからないことです。これは、AdminProductsCtrl $scope (たとえば、$scope.menu) 内のすべての AdminCtrl $scope を繰り返すことを意味します。
どうもありがとう、そして「私の英語」でごめんなさい。
アップデート
考えた後...そして考えた...ルートが私のアプリには適用されないことを理解した後、すべての機能を1つのURL「site.com/#/admin」で管理します。menu.html は AdminMenuCtrl の管理であり、このコントローラーには「ng-include」ごとにモデルが含まれ、メニュー エントリごとに 1 つのメソッドが含まれています。ユーザーがメニュー エントリをクリックすると、$scope の Associate メソッドが $scope.includes.body を「新しい」html に置き換えます。部分的に ng-controller が含まれています。
これで問題なく動作します:D. そして最高なのは、$rootScope を使用する必要がないことです。
新しい問題はもう少し複雑で、ng-include にはタグ (つまり DIV) と ng-controller も必要です。それから私のデザインはこれに影響を受けます。コード言語:
設計:
<div>MENU-HTML</div>
<div>BODY-HTML</div>
テンプレート:
<div ng-include="menu"></div>
<div ng-include="body"></div>
パーシャルを取得した後:
<div ng-include="menu"><div ng-controller="MenuCtrl">MENU-HTML</div></div>
<div ng-include="body"><div ng-controller="ListProductsCtrl">BODY-HTML</div></div>
理想的なこと:
1 - ng-include は、DIV に「含める」のではなく、DIV を「置換」します。
2 - ng-controller DIV は DOM で何も置き換えられません。
angularで可能になりましたか?このアイデアは悪いアプローチですか?ng-controller ディレクティブではなく、$route によるポイント 2 が可能です。