重复显示每条记录的唯一范围,angularjs

时间:2014-07-31 06:02:02

标签: javascript angularjs

我使用ng-repeat将我的记录显示为:

<ul ng-repeat= 'stu in students'>
  <li>{{stu.name}}</li>
  <li>{{stu.age}}</li>
  <li><button ng-click="show()">show</button></li>
 <li ng-show="showThis">Hello {{stu.name}}</li>
</ul>

并在我的控制器中:

  $scope.show = function () {
      $scope.showThis = true ;
  };

所以,当我点击任何一个节目按钮时,它会显示所有学生的姓名,  但我想只展示一个被选中的学生。如何仅将此范围与选定记录绑定?

1 个答案:

答案 0 :(得分:3)

方法1。在每次迭代ngRepeat上创建一个新的子范围。您可以在相应的控制器方法中使用this关键字引用当前的一个。例如:

$scope.show = function() {
    this.showThis = true;
};

这将成为一个技巧。

演示:http://plnkr.co/edit/857DsN6EYI21sEvn15Ul?p=preview

方法2。您只需将当前学生参考传递给show方法并设置其showThis属性:

<ul ng-repeat='stu in students'>
    <li>{{stu.name}}</li>
    <li>{{stu.age}}</li>
    <li>
        <button ng-click="show(stu)">show</button>
    </li>
    <li ng-show="stu.showThis">Hello {{stu.name}}</li>
</ul>

在控制器中:

$scope.show = function(student) {
    student.showThis = true;
};

演示:http://plnkr.co/edit/F3yKm4kiq2HDZGe9aF6W?p=preview