处理.NETLC中需要访问范围的_Layout的正确方法

时间:2014-05-22 18:29:11

标签: asp.net-mvc angularjs

我在现有的.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决定。有没有更好的方法来分开这个?其他人如何征服这个问题?

1 个答案:

答案 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控制器中的逻辑将知道如何在无序列表中呈现该数据。