使用ng-view时,可以在视图之间保持变量作为参考?

时间:2014-11-05 21:57:51

标签: javascript angularjs ng-view

我遇到这种情况:我有一个带有两个标签的网页。这些选项卡需要使用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>

因此,主页面是主容器,选项卡是子容器。如何在子节点之间保留一个变量作为参考,以便在子节点之间使用相同的值。

- 编辑

我忘记提到一些非常重要的事情:参考变量可以由孩子修改,并且需要在其他孩子之间保持值。 谢谢你的帮助,

卡琳

1 个答案:

答案 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所说,你也可以创建一个服务并将其注入任何需要共享值的控制器。