我从代码开始:
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 中重复所有 AdminCtrl $scope(例如 $scope.menu)。
非常感谢,对不起“我的英语”。
更新
经过思考......并思考......我了解路由不适用于我的应用程序,然后我在一个 url 'site.com/#/admin' 下管理所有功能。menu.html 是为 AdminMenuCtrl 管理的,该控制器包含每个“ng-include”的模型,并包含每个菜单条目的一个方法。当用户单击菜单条目时,$scope 中的 associate 方法将 $scope.includes.body 替换为“新”html。部分包含您的 ng 控制器。
现在这工作正常: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 中被替换。
现在可以使用角度吗?这个想法是一个坏方法吗?$route 第 2 点是可能的,而不是 ng-controller 指令。