我在现有的.NET MVC应用程序中使用angular。我们所有的.cshtml视图都包含一个部分_Layout.cshtml。我们在此_Layout中生成了左侧边栏。根据网络路线,左栏中的内容将发生变化。
问题是我需要获取并将信息放入_Layout中从$ scope开始的侧边栏中。我知道这样做的唯一方法是进入布局并用ng-app包装它。像这样:
_layout:
@(ViewBag.HotList != null ? " ng-app=hotListApp" : "")
if (ViewBag.Hotlist != null)
{
<ul ng-controller="someCtrl" id="hotlist" class="hotlist">
</ul>
}
@RenderBody()
但这很麻烦我有很多页面。我必须为大多数页面做这个ng-app决定。有没有更好的方法来分开这个?其他人如何征服这个问题?
答案 0 :(得分:1)
我们将ng-app放在body标签级别:
<body id="ng-app" ng-app="app">
通过这种方式,您可以与任何可能存在的UI元素进行交互。您可能需要考虑将HotList变为Angular Directive。然后,您可以在指令中放置属性,您可以在控制器中为侧边栏进行交互。你的指令看起来像:
<div ng-controller="sidebarController"
<HotList data="myData" />
</div>
sidebarController将负责检索数据并将其分配给$ scope变量“myData”。 HotList控制器中的逻辑将知道如何在无序列表中呈现该数据。