是否可以像在 c# 中那样在 angularjs 中引用范围?

Is it possible to reference scope in angularjs like in c#?

我在引用 angularjs 作用域时遇到问题,例如在 c# 或 c++ 中。

场景如下:

我在 HTML 中有这样的代码。

<ul class="dropdown-menu dropdown-menu-right myDropdown" role="menu" style="border-radius:0">
  <li data-ng-repeat="year in YearList"><a data-ng-click="SetYear(year,summer1)">{{year}}</a></li>
</ul>

这是另一个 html 代码(另一个下拉列表)

<ul class="dropdown-menu dropdown-menu-right myDropdown" role="menu" style="border-radius:0">
  <li data-ng-repeat="year in YearList"><a data-ng-click="SetYear(year,summer2)">{{year}}</a></li>
</ul>

summer1summer2是一个作用域。

这是我在控制器中的代码

$scope.SetYear = function(yearValue,myRef){
  myRef = year;
};

这里的逻辑是将year保存到myRef

我试过这个

<a data-ng-click="summer1=year">{{year}}</a>

但是没用..

我尝试为所有下拉菜单创建一个范围函数,因为我可能有很多下拉菜单将使用该函数。

我的问题有什么解决办法吗..有没有 referencing 角度的?

这是范围问题。 在每个 ngRepeat 中,您都有不同的范围;这意味着第一个 ngRepeat 迭代中的 summer1ngRepeat 之外的 summer1 是不同的变量。 可能实现你想要的最简单的方法是使用变量名作为索引:

<ul class="dropdown-menu dropdown-menu-right myDropdown" role="menu" style="border-radius:0">
  <li data-ng-repeat="year in YearList"><a data-ng-click="SetYear(year,'summer1')">{{year}}</a></li>
</ul>

$scope.SetYear = function(yearValue,myRef){
  $scope[myRef] = year;
};

$scope['a-string'] 不好,但您可以使用另一个范围变量,这样就不会弄脏范围,例如:

$scope.summers = {};
$scope.SetYear = function(yearValue,myRef){
  $scope.summers[myRef] = year;
};

并使用$scope.summers.summer1 / $scope.summers.summer2。 或者,如果您想在 html 中完成所有操作:

<div ng-init="summers={}">
  <h2>Summer 1: {{ summers.summer1 }}</h2>
  <ul class="dropdown-menu dropdown-menu-right myDropdown" role="menu" style="border-radius:0">
    <li data-ng-repeat="year in YearList"><a data-ng-click="summers.summer1=value">{{year}}</a></li>
  </ul>
  <h2>Summer 2: {{ summers.summer2 }}</h2>
  <ul class="dropdown-menu dropdown-menu-right myDropdown" role="menu" style="border-radius:0">
    <li data-ng-repeat="year in YearList"><a data-ng-click="summers.summer2=value">{{year}}</a></li>
  </ul>
</div>