Javascript AngularJS-ng重复和ng显示
我得到了以下代码:Javascript AngularJS-ng重复和ng显示,javascript,angularjs,repeat,Javascript,Angularjs,Repeat,我得到了以下代码: <div class="map" ng-controller="DealerMarkerListCtrl"> <a ng-click="showdetails=!showdetails" href="#/dealer/{{marker.id}}" class="marker" style="left:{{marker.left}}px;top:{{marker.top}}px" ng-repeat="marker in dealer"><
<div class="map" ng-controller="DealerMarkerListCtrl">
<a ng-click="showdetails=!showdetails" href="#/dealer/{{marker.id}}" class="marker" style="left:{{marker.left}}px;top:{{marker.top}}px" ng-repeat="marker in dealer"></a>
</div>
这种观点:
<div ng-show="showdetails" class="alldealermodal">
<div ng-view></div>
</div>
同样的“ng show”功能在ng repeat外只有一个链接正常工作,但在这个ng repeat中它不工作。链接应打开覆盖层。ng视图也适用 我缺少什么?因为创建了一个新范围,所以在
ng repeat
之外引用的showdetails
与在重复的ng click
中更新的showdetails
不是同一个实例
您可以查看更多详细信息,但解决新范围的一种方法是绑定到对象属性而不是基元类型
显示绑定到详细信息的小示例。使用以下内容显示而不是showdetails
:
$scope.details={show:true}代码>
“我错过了什么?”
正如@Gloopy已经提到的,您可能没有意识到ng repeat会创建子作用域(每个项一个)。此外,还需要了解JavaScript原型继承的工作原理,因为每个子作用域原型继承自同一父作用域,这会影响JavaScript在作用域上查找(或创建)属性的方式
注意,许多角度内置指令创建子作用域:ng repeat、ng include、ng switch、ng controller、指令(can,但不一定)。有关原型继承如何工作的(更多)信息,以及在尝试绑定到原语时为什么会出现问题,以及它与角度范围的关系,请参阅
为了扩展@Gloopy的答案,您可以考虑另外两种选择:
在ng repeat中使用$parent
绑定到父作用域属性(而不是创建子作用域属性):