将JSON信息显示在下拉列表中.Angularjs

时间:2016-07-20 08:35:03

标签: javascript arrays angularjs json

这是我的JSON数据:

{
    result: 1,
    vote_time_slots: {
    2016-08-07: {
        diff: 1080,
        slots: {
            08:42: false, 09:36: false, 06:54: false, 04:30: false,
            09:18: false, 09:00: false, 08:24: false, 05:42: false,
            06:00: false, 10:12: false, 08:06: false, 06:36: false,
            07:12: false, 07:48: false, 05:24: false, 06:18: false,
            09:54: false, 07:30: false, 10:30: false, 05:06: false,
            04:48: false
        }
    },
    2016-07-25: {
        diff: 1080,
        slots: {
            08:42: false,
            09:36: false,
            06:54: false,
        }
    },

我希望像08:42,09:36等时间段进入下拉列表。

请告诉我如何导航到插槽字段并获取插槽值过滤为false(值为)

<li ng-repeat="c in eventTimings | filter: ????:false"><a>{{(c)}}

如何基于过滤器显示?

如果我有真值,则相应的时段不应显示在下拉列表中。

3 个答案:

答案 0 :(得分:1)

试试这样:

slots = {
            "08:42": false, "09:36": false, "06:54": false, "04:30": false,
            "09:18": false, "09:00": false, "08:24": false, "05:42": false,
            "06:00": false, "10:12": false, "08:06": false, "06:36": false,
            "07:12": false, "07:48": false, "05:24": false, "06:18": false,
            "09:54": false, "07:30": false, "10:30": false, "05:06": false,
            "04:48": false
        };
var arr = [];
for(var prop in slots) { arr.push(prop); }
console.log(arr);

从这里开始,你重复一下arr

ng-repeat="opt in arr" ...

答案 1 :(得分:0)

您必须迭代插槽的属性(因为它是对象格式)。请在提问之前在stackoverflow中搜索。

查看以下链接中的答案是否有助于使用逻辑来编写自定义过滤器:

Iterate through object properties

答案 2 :(得分:0)

您可以尝试这个简单的solution

<li ng-repeat="(key, value) in data.slots" ng-if='!value'>{{key}}</li>

另一种方法 - 创建custom filter

<强> HTML:

<li ng-repeat="(key, value) in data.slots | custom : false">{{key}}</li>

<强>使用Javascript:

.filter('custom', function() {
  return function(input, search) {
    var result = {};
    angular.forEach(input, function(value, key) {
      if (value == search) {
        result[key] = value;
      }
    });
    return result;
}});