是否可以像在 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>
那summer1
和summer2
是一个作用域。
这是我在控制器中的代码
$scope.SetYear = function(yearValue,myRef){
myRef = year;
};
这里的逻辑是将year
保存到myRef
。
我试过这个
<a data-ng-click="summer1=year">{{year}}</a>
但是没用..
我尝试为所有下拉菜单创建一个范围函数,因为我可能有很多下拉菜单将使用该函数。
我的问题有什么解决办法吗..有没有 referencing
角度的?
这是范围问题。
在每个 ngRepeat
中,您都有不同的范围;这意味着第一个 ngRepeat 迭代中的 summer1
与 ngRepeat
之外的 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>
我在引用 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>
那summer1
和summer2
是一个作用域。
这是我在控制器中的代码
$scope.SetYear = function(yearValue,myRef){
myRef = year;
};
这里的逻辑是将year
保存到myRef
。
我试过这个
<a data-ng-click="summer1=year">{{year}}</a>
但是没用..
我尝试为所有下拉菜单创建一个范围函数,因为我可能有很多下拉菜单将使用该函数。
我的问题有什么解决办法吗..有没有 referencing
角度的?
这是范围问题。
在每个 ngRepeat
中,您都有不同的范围;这意味着第一个 ngRepeat 迭代中的 summer1
与 ngRepeat
之外的 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>