1

我从代码开始:

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 指令。

4

1 回答 1

1

我相信你在你的例子中是正确的????layout.html但这个想法是根据路线有不同的观点,所以指向相同的观点layout.html并不理想。

如果您尝试在所有页面上保留静态菜单,我会将菜单添加到您的菜单中index.html,然后为每条路线选择不同的 templateUrl(即/admingo topartials/admin.html/admin/productsgo to partials/products.html)而不使用 ngInclude。

我是 AngularJS 的新手,但我的印象是,如果您想滚动自己的视图切换,您通常希望将 ngView 与到 templateUrls 的路由一起使用,或者使用 ngInclude (可能与ngSwitch一起使用)。我敢肯定,有时同时使用两者都是合适的,但作为新手,这让我有些困惑。如有不对请各位高手指正!

对于您的第二个问题,此处此处可能有一些有用的信息,用于在多个控制器之间共享相同模型的提示,但您的示例可能不需要。

另一种方法是在 layout.html 中使用字符串常量路径指向您的部分,并使用以下方法删除$scope.menu控制器代码中的引用:

<div ng-include="'partials/admin/menu.html'"/>
于 2012-07-09T20:44:32.603 回答