我在引用像c#或c ++这样的angularjs范围时遇到了问题。
以下是该方案:
我在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
?
答案 0 :(得分:2)
这是一个范围问题。
每个ngRepeat
你都有不同的范围;这意味着第一次ngRepeat迭代中的summer1
与summer1
之外的ngRepeat
不同。
实现您想要的最简单方法可能是使用变量名作为索引:
<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>