Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/83.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.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:单击隐藏活动表并显示新表?_Javascript_Html_Angularjs - Fatal编程技术网

Javascript AngularJS:单击隐藏活动表并显示新表?

Javascript AngularJS:单击隐藏活动表并显示新表?,javascript,html,angularjs,Javascript,Html,Angularjs,我有一个html表格,当我点击任何一行时,新表格会显示一些行数据的更具体信息。我正在使用ng click,ng repeat和ng show。以下是我试图实现的目标:我希望这样做,当我单击某一行时,表显示;当我再次单击同一行时,表隐藏;当某一行处于活动状态时,如果单击另一行,则第一个表隐藏,新表显示。这是我的html: <tbody> <tr ng-repeat-start="car in carList | filter:tableFilter" ng-click="

我有一个html表格,当我点击任何一行时,新表格会显示一些行数据的更具体信息。我正在使用
ng click
ng repeat
ng show
。以下是我试图实现的目标:我希望这样做,当我单击某一行时,表显示;当我再次单击同一行时,表隐藏;当某一行处于活动状态时,如果单击另一行,则第一个表隐藏,新表显示。这是我的html:

<tbody>
    <tr ng-repeat-start="car in carList | filter:tableFilter" ng-click="modelRow.activeRow = car.name; car.showDetails = !car.showDetails">
        ....
    </tr>       
    <tr ng-repeat-end ng-show="modelRow.activeRow==car.name && car.allReviews.length!=0 && car.showDetails" class="hidden-table">
        <td colspan="6">
            <table class="table table-striped table-bordered table-condensed table-hover">
                <tbody ng-repeat="rev in car.allReviews">
                    ....
                </tbody>
            </table>
        </td>
    </tr>
</tbody> 
最初,我的
“showDetails”
在我的
$scope.carList
数组中的每个对象中设置为
false

然后,正如您在我的html中所看到的那样,我会单击
ng=“modelRow.activeRow=car.name;car.showDetails=!car.showDetails”

它工作正常,但当我单击,例如,在
“大众高尔夫”
行,然后单击
“福特福克斯掀背车”
,然后再次单击
“大众高尔夫”
行时,该表将不会显示

这是因为当我在
$scope.carList
数组中的任何行上单击一点
时,“showDetails”
值被设置为
true
而不是
false

我如何解决这个问题,或者用什么替代方法来实现我的目标?

注意:我还需要一个不会减慢我的网站速度的解决方案,(我的
$scope.carList
阵列有数百辆车)

  • 使“showDetails”成为与汽车无关的全局变量
  • 为ng生成函数单击=“func(car)”
  • $scope.func=函数(汽车){
    如果(!$scope.showDetails){//打开信息
    $scope.showDetails=true;
    }如果($scope.modelRow.activeRow=car.name&&$scope.showDetails){
    //信息已为打开,正在关闭
    $scope.showDetails=false;
    }否则{//info已打开,我们将打开新的
    $scope.showDetails=true;
    }
    $scope.modelRow.activeRow=car.name;
    }
    carApp.controller("TableBodyCtrl", function($scope){
        $scope.modelRow = { activeRow: '' };
        $scope.carList = [{"name":"Ford Focus hatchback",...,"showDetails":false}...];