与 AngularJS ng-options 混淆
Confused with 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>
第一步:将您的数据格式化为 ng-options 可以使用的单个 array/object。像你这样的多维数据是行不通的。
假设这是您的源数据:
var data = {
2015: {
02: {monthname: 'February'},
01: {monthname: 'January'}
}
};
将其格式化为平面对象(key/value 对):
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"
我有这个 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>
第一步:将您的数据格式化为 ng-options 可以使用的单个 array/object。像你这样的多维数据是行不通的。
假设这是您的源数据:
var data = {
2015: {
02: {monthname: 'February'},
01: {monthname: 'January'}
}
};
将其格式化为平面对象(key/value 对):
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"