Angularjs 路由器和刷新倍数ng入口

Angularjs 路由器和刷新倍数ng入口,angularjs,Angularjs,我从代码开始: when('/admin', { templateUrl: 'partials/admin/layout.html', controller: AdminCtrl }) when('/admin/products', { templateUrl: '????', controller: AdminProductsCtrl }) 模板“树”: 要点是:如果我把layout.html放在“??”中,这个工作很好,但我只喜欢“刷新”ng include

我从代码开始:

when('/admin', {
    templateUrl: 'partials/admin/layout.html',
    controller: AdminCtrl
})
when('/admin/products', {
    templateUrl: '????',
    controller: AdminProductsCtrl
})
模板“树”:

要点是:如果我把layout.html放在“??”中,这个工作很好,但我只喜欢“刷新”ng include=body。我认为我对Angularjs的看法是错误的

另一个问题是,当AdminProductsCtrl“接管”layout.html时,我错过了AdminCtrl$范围,这意味着在AdminProductsCtrl$范围(例如$scope.menu)中重复所有AdminCtrl$范围

非常感谢,很抱歉我的英语

更新

仔细想想。。想想。。。我知道路由不适用于我的应用程序,然后我在一个url“site.com/#/admin”下管理所有功能。html是针对AdminMenuCtrl进行管理的,此控制器包含每个“ng include”的模型,并包含每个菜单项的一个方法。当用户单击菜单项时,$scope中的associate方法将$scope.includes.body替换为'new'html。部分包含您的ng控制器

到目前为止,这一切都很好:D。最好的是,我不需要使用$rootScope

新问题有点复杂,ng包括需要一个标签(即DIV)和ng控制器。那么我的设计会因此受到影响。在代码语言中:

设计:

<div>MENU-HTML</div>
<div>BODY-HTML</div>
MENU-HTML
BODY-HTML
模板:

<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>
MENU-HTML
BODY-HTML
理想的事情是:

1-ng include不在DIV中“包含”,而是“替换”DIV

2-ng控制器DIV在DOM中被替换为空


现在有可能吗?这是一个糟糕的方法吗?点2可以使用$route,而不是ng控制器指令。

我相信您在示例中是正确的,您可以将
??
设置为
layout.html
,但是想法是基于路由有不同的视图,因此指向相同的
layout.html
并不理想

如果您试图在所有页面上保留静态菜单,我会将菜单添加到您的
index.html
,然后为每个路由选择不同的模板URL(即
/admin
转到
partials/admin.html
/admin/products
转到
partials/products.html
),而不使用ngInclude

我是AngularJS的新手,但我得到的印象是,如果您想进行自己的视图切换,您通常希望将ngView与模板URL的路由一起使用,或者使用ngInclude(可能与)。我相信有时两者都是合适的,但作为一个新手,这让我有些困惑。住院专家如果我错了,请纠正我

对于您的第二个问题,可能会有一些有用的信息和关于在多个控制器之间共享同一模型的提示,但您可能不需要为您的示例提供这些信息

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

<div ng-include="'partials/admin/menu.html'"/>

我相信您的示例是正确的,您会将
??
设置为
layout.html
,但想法是根据路线有不同的视图,因此指向相同的
layout.html
并不理想

如果您试图在所有页面上保留静态菜单,我会将菜单添加到您的
index.html
,然后为每个路由选择不同的模板URL(即
/admin
转到
partials/admin.html
/admin/products
转到
partials/products.html
),而不使用ngInclude

我是AngularJS的新手,但我得到的印象是,如果您想进行自己的视图切换,您通常希望将ngView与模板URL的路由一起使用,或者使用ngInclude(可能与)。我相信有时两者都是合适的,但作为一个新手,这让我有些困惑。住院专家如果我错了,请纠正我

对于您的第二个问题,可能会有一些有用的信息和关于在多个控制器之间共享同一模型的提示,但您可能不需要为您的示例提供这些信息

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

<div ng-include="'partials/admin/menu.html'"/>


Hi@gloopy,谢谢您抽出时间。根据所选菜单选项的不同,menu.html会有所不同,有些情况是隐藏的。我更新答案。我将阅读链接,谢谢!您好,我想我正在尝试类似于您的多控制器和包括。尝试将controller div移出您的partial并将其置于include(like)之外,然后在您想要将其关闭时使用控制器代码更新include源代码。我不能这样做,因为每个partial都有自己的控制器。您好@gloopy,谢谢您的时间。根据所选菜单选项的不同,menu.html会有所不同,有些情况是隐藏的。我更新答案。我将阅读链接,谢谢!您好,我想我正在尝试类似于您的多控制器和包括。尝试将controller div移出您的partial并将其置于include(like)之外,然后在您要将其切换出去时使用控制器代码更新include源。我无法这样做,因为每个partial都有自己的控制器。
<div ng-include="'partials/admin/menu.html'"/>