Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/433.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 角JS隐藏/显示每个项目和所有项目_Javascript_Angularjs - Fatal编程技术网

Javascript 角JS隐藏/显示每个项目和所有项目

Javascript 角JS隐藏/显示每个项目和所有项目,javascript,angularjs,Javascript,Angularjs,我有一个复述器,每个项目都有标题和说明。我希望能够在复选框的帮助下一次隐藏所有描述。这很容易做到。然后我想能够隐藏或显示每一个单独的描述了。我几乎让它工作了,除了一个问题:如果我用复选框隐藏所有描述,然后点击一个描述来显示它,直到我第二次点击它,什么都不会发生 有什么办法吗 这是我的密码: <div id="container" ng-app="" ng-controller="myController"> <input type="checkbox" ng-model

我有一个复述器,每个项目都有标题和说明。我希望能够在复选框的帮助下一次隐藏所有描述。这很容易做到。然后我想能够隐藏或显示每一个单独的描述了。我几乎让它工作了,除了一个问题:如果我用复选框隐藏所有描述,然后点击一个描述来显示它,直到我第二次点击它,什么都不会发生

有什么办法吗

这是我的密码:

<div id="container" ng-app="" ng-controller="myController">
    <input type="checkbox" ng-model="MinAllDescriptions" /> <span>Minimize all descriptions</span><br /><br />

    <div class="itemContainer" ng-repeat="item in ItemList">
        <span class="itemHeadline">{{item.Headline}}</span> 
        <a href="#" ng-click="MinThisDescription = !MinThisDescription">Hide / Show</a>
        <div class="itemDescription" ng-hide="MinAllDescriptions || MinThisDescription" ng-show="!MinAllDescriptions || !MinThisDescription">{{item.Description}}</div>

    </div>
</div>

<script>
function myController($scope) {
    $scope.MinAllDescriptions = false;
    $scope.ItemList = [
        {Headline: "Item one", Description: "This is item one"},
        {Headline: "Item two", Description: "This is item two"},
        {Headline: "Item three", Description: "This is item three"},
        {Headline: "Item four", Description: "This is item four"},
        {Headline: "Item five", Description: "This is item five"}
    ];
}
</script>

最小化所有描述

{{item.Headline} {{item.Description} 函数myController($scope){ $scope.MinAllDescriptions=false; $scope.ItemList=[ {标题:“第一项”,说明:“这是第一项”}, {标题:“第二项”,说明:“这是第二项”}, {标题:“第三项”,说明:“这是第三项”}, {标题:“第四项”,说明:“这是第四项”}, {标题:“项目五”,说明:“这是项目五”} ]; }
在这里查看JSFIDLE:

试试这个-

Html


将事件添加到复选框并设置$scope.MinAllDescriptions=$scope.MinAllDescriptions

为什么不将MinThisDescription与itemList中的项绑定?在同一个标记上有ng show和ng hide,删除该标记并放置一个logicHey,类似于三态复选框实现。您应该仅基于此描述显示/隐藏。此外,MinAllDescriptions click应根据是否至少有一个项目可见来设置/重置所有MinThisDescription。你可以模仿gmail的行为。
<div id="container" ng-app="" ng-controller="myController">
    <input type="checkbox" ng-click="minimizeAll()" ng-model="MinAllDescriptions" /> <span>Minimize all descriptions</span><br /><br />

    <div class="itemContainer" ng-repeat="item in ItemList">
        <span class="itemHeadline">{{item.Headline}}</span> 
        <a href="#" ng-click="item.MinThisDescription = !item.MinThisDescription">Hide / Show</a>
        <div class="itemDescription" ng-hide="item.MinThisDescription">{{item.Description}}</div>            
    </div>
</div>
function myController($scope) {
    $scope.MinAllDescriptions = false;
    $scope.ItemList = [
        {Headline: "Item one", Description: "This is item one"},
        {Headline: "Item two", Description: "This is item two"},
        {Headline: "Item three", Description: "This is item three"},
        {Headline: "Item four", Description: "This is item four"},
        {Headline: "Item five", Description: "This is item five"}
    ];

    $scope.minimizeAll = function(){
        angular.forEach($scope.ItemList, function(item, i){
            item.MinThisDescription = !$scope.MinAllDescriptions;
        });
    }
}