【发布时间】:2014-06-16 22:33:37
【问题描述】:
编辑 我刚刚意识到为什么它可能不起作用,尽管我不知道如何解决这个问题。包含在我的主 HTML 页面上,而不是在我的 ng-view 中。这可能是 $parent 不起作用的原因,因为从技术上讲,ng-view 是包含的父级。所以它是:
<body>
<div ng-view></div>
<div ng-include="menuPath"></div>
</body>
我需要从 ng-include 范围访问 ng-view 范围。
我创建了一个 plunker 来说明问题 http://plnkr.co/WtVdkWKXaPWCfHJPLf1q
原始问题
由于我无法控制的限制,我必须使用 ng-include 包含每个页面的所有菜单。我试图弄清楚如何从 ng-include 访问和修改父范围。我找到了几个关于它的线程,但例子都消失了。这似乎很简单,但我似乎找不到答案。
例如,在我的主页上,Scope 中有以下数据
{
"Statuses":
[
{"ID":"1", "Name":"Open"},
{"ID":"2", "Name":"Closed"}
],
"StatusID":"1"
}
在我的 ng-include 中,我正在尝试执行以下操作:
<select ng-model="StatusID" ng-options="x.ID as x.Name for x in Statuses"></select>
虽然 ng-include 显然创建了它自己的 Scope,但它没有获取数据。
【问题讨论】:
-
尝试将您的对象放入服务并以这种方式共享。
-
你能给我举个例子吗?不一定要准确。我对此还是有点陌生。
-
您能否展示您如何在控制器中设置
$scope.Statuses。这可能是问题所在。 -
我知道父页面上的范围设置正确,因为我正在从范围值加载主页上的数据。
-
使用 ng-view,控制器会自动交换。在 ng-include 中,视图已设置,但控制器从未交换(甚至设置)。这就是它不更新 ng-include 的视图的原因。如果您为每个菜单视图创建单独的指令,您将能够为每个视图设置不同的控制器。
标签: angularjs angularjs-scope angularjs-ng-include