我遇到这种情况:我有一个带有两个标签的网页。这些选项卡需要使用angularjs中的ng-view。这些选项卡的特殊性是它们需要在引用中使用相同的变量,比如引用c#(ref关键字)中的变量。
您可以查看此演示的使用对象部分,了解我的意思: http://plnkr.co/edit/zZfUQN?p=preview
<h3>Using object:</h3>
<div class="example">
<img class="mainImg" ng-src="{{mainImg.url}}" />
<p>This is the parent scope with the main image.</p>
<p>$scope.mainImg.url == {{mainImg.url}}</p>
<div class="thumbs">
<p>Thumbs generated with ng-repeat, with ng-click setting <strong>$scope.mainImg.url</strong> (click on them to see what happens):</p>
<div class="thumbDiv" ng-repeat="img in images">
<img class="thumb" ng-src="{{img}}" ng-click="mainImg.url = img" />
<p>This is a child scope generated by ng-repeat.</p>
<p>$scope.mainImg.url == {{mainImg.url}}</p>
</div>
</div>
</div>
因此,主页面是主容器,选项卡是子容器。如何在子节点之间保留一个变量作为参考,以便在子节点之间使用相同的值。
- 编辑
我忘记提到一些非常重要的事情:参考变量可以由孩子修改,并且需要在其他孩子之间保持值。 谢谢你的帮助,
卡琳
答案 0 :(得分:1)
我认为你所追求的是$rootScope
。范围也是继承的,因此如果您在父范围内定义某些内容并且未在子范围中覆盖它,则可以访问它。
function MainController($scope, $rootScope) {
$rootScope.sharedVar = 'Hello';
}
function Child1Controller($scope, $rootScope) {
//access $rootScope.sharedVar;
}
function Child2Controller($scope, $rootScope) {
//access $rootScope.sharedVar;
}
编辑正如Anthony Chu所说,你也可以创建一个服务并将其注入任何需要共享值的控制器。