对AngularJS ng-options感到困惑

时间:2015-02-10 01:36:44

标签: json angularjs ng-options

我有这个JSON(从Mozilla Firefox中提取的输出):

2015: Object
   02: Object
    monthname: "February"
   01: Object
    monthname: "January"

所以,我想使用AngularJS指令:ngOptions。

我不知道如何访问这些对象。我想重现类似的东西:

<select>
  <option value="2015-00">2015</option>
  <option value="2015-02">February</option>
  <option value="2015-01">January</option>
</select>

1 个答案:

答案 0 :(得分:0)

第一步:将数据格式化为ng-options可以使用的单个数组/对象。像你这样的多维数据将无法正常工作。

假设这是您的源数据:

var data = {
    2015: {
        02: {monthname: 'February'},
        01: {monthname: 'January'}
    }
};

将其格式化为扁平对象(键/值对):

var options = {};
for (var year in data) {
    if (!data.hasOwnProperty(year)) break;
    options[year+'-0'] = year;
    for (var month in data[year]) {
        if (!data[year].hasOwnProperty(month)) break;
        options[year+'-'+month] = data[year][month].monthname;
    }
}

这应该导致options变量看起来像这样:

{
    '2015-0': 2015,
    '2015-2': 'February',
    '2015-1': 'January'
}

将这些选项放入$ scope中,以便您可以使用它们:

$scope.options = options;

然后按如下方式使用ng-options:

ng-options="key as value for (key,value) in options"

有关ng-options formatting is available here的详细信息。

Jsfiddle example here.