AngularJS - ng-click中的ng-repeat不执行

时间:2017-06-13 18:47:17

标签: javascript angularjs

在以下代码中,ng-click不会指定' color'到了

<div ng-app>
 <div ng-controller="xCtrl">
  <div ng-repeat="color in colors" ng-click="selected_color=color" style="cursor:pointer;">{{ $index }} - {{ color }}</div>
  <hr>
  Selected Color: {{ selected_color }}
 </div>
</div>

示例:http://jsfiddle.net/s6vrz184/

1 个答案:

答案 0 :(得分:3)

确实如此,而不是你的想法。 ngRepeat创建自己的子范围,因此实际上,每次点击时,您都会在该子范围上创建一个名为selected_color的新变量并进行设置。

在您的控制器上创建一个方法,然后调用它:

$scope.setColor = function(color) {
    $scope.selected_color = color;
}

并使用此:

<div ng-repeat="color in colors" ng-click="setColor(color)" style="cursor:pointer;">{{ $index }} - {{ color }}</div>

更新了小提琴:http://jsfiddle.net/s6vrz184/1/

如果您因某些原因反对使用控制器功能,可以$parentselected_color变量设置为内联,但不建议这样做:

<div ng-repeat="color in colors" ng-click="$parent.selected_color=color" style="cursor:pointer;">{{ $index }} - {{ color }}</div>

$parent小提琴:http://jsfiddle.net/s6vrz184/2/