Javascript复杂if语句

时间:2015-03-18 04:07:42

标签: javascript json angularjs conditional-statements

好的,所以我在Angularjs / Javascript的情况下。我有一个来自json的项目列表,它们都有子类别。所以我需要发生的是当我的列表显示时,如果用户在该列表中选择了该项,那么子类别中相关的所有内容都将显示。

示例

Group [
    { Item 1:
        { sub 30,
    },
    Item 2:
        { sub 53,
    },
    Item 7:
        { sub 21,
    },
    Item 2:
        { sub 97,
    },
}]

如你所见,有两个“第2项”。如果用户选择项目2,则子53和97将显示。我不知道如何执行条件语句或者如果有任何方法可以执行'Angular way'

3 个答案:

答案 0 :(得分:0)

这不是特定角度的,但我会在收到数据时处理您的数据,并且更容易获得Item属性引用的子值列表。

 var newGroup = {
    'Item 1': [30],
    'Item 2': [53, 97],
    'Item 3': [21]
};

然后您可以在ng-repeat

中使用键值语法
<div ng-repeat="(key, value) in myObj"> ... </div>

答案 1 :(得分:0)

假设用户已经选择了其中一个项目,并且列表中有许多子项目。 最简单的方法是在“用户选择”

上将变量指定为所选项目及其子项目
 ...// on user selection 
 $scope.selectedItem = 'itemName from user input'; 
 $scope.selected = $array_of_subitems; // this is item2 for example , and contains all the subs belonging to that

注意:如果您可以提供更具体的方式来调用选择,我可以改进上面的代码

在你的html中,由于你需要显示所选元素,你可以轻松地显示所有子项

 <h1>Item Named : {{selectedItem}} has following subitems</h1>
 <div ng-repeat="subitem in selected">
      {{subitem}}
 <div>

答案 2 :(得分:0)

试试这个:

var myApp = angular.module('myApp',[]);

function MyCtrl($scope) {
    var items = [
        {
            "Item 1": "sub 30"
        },
        {
            "Item 2": "sub 53"
        },
        { 
            "Item 7": "sub 21",
        },
        {
            "Item 2": "sub 97"
        }
    ];
    
    var grouped = {};
    for (var i=0; i<items.length; i++) {
        for (var item in items[i]) {
            if (!grouped[item]) {
                grouped[item] = {};
                grouped[item].subs = [];
            }
            grouped[item].subs.push(items[i][item]);
        }
    }
    
    $scope.group = grouped;
    
    $scope.toggleSubs = function(item) {
       $scope.group[item].showSubs = !$scope.group[item].showSubs;
    }
}
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script>
<div ng-app ng-controller="MyCtrl">
    <div ng-repeat="(item, data) in group">
        <a href ng-click="toggleSubs(item)">{{item}}</a>
        <div ng-show="data.showSubs">
            <div ng-repeat="sub in data.subs">
             <ul>
                 <li>{{sub}}</li>
             </ul>
            </div>
        </div>
    </div>
</div>