Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript AngularJS-ng重复和ng显示_Javascript_Angularjs_Repeat - Fatal编程技术网

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
    绑定到父作用域属性(而不是创建子作用域属性):