使用ng-options语法和对象索引而不是对象名称

时间:2016-05-05 21:07:02

标签: angularjs json angularjs-ng-options

我正在使用Angular 1,并且一直尝试使用ng-options指令显示下拉列表值,唯一可能对我有用的是:

<selectdata-ng-options="key as value for (key,value) in JSON.ObjectName.ListValues"></select> 

由于生成JSON的方式,我需要迭代地显示任意数量的下拉菜单。因此,使上述语法工作的唯一方法是分配基于索引的值示例: index [0] 代替 ListValues 。像这样:

<select data-ng-options="key as value for (key,value) in JSON.ObjectName.index[0]">

我的JSON对象格式为:

{
    "JSON": {
        "ObjectName": {
            "ItemValues": {
                "0000": "County",
                "0100": "City",
                "0200": "State",
                "0300": "Region",
                "0400": "Country"
            },
            "AreaValues": {
                "1111": "Metro",
                "11AA": "Subway",
                "2222": "Bus"
                "22BB": "Transit"
            }
        }
    }
}

我已经尝试将JSON分配给我的控制器中的范围对象并试图在我的页面上显示,但如果我要对任何数量的下拉菜单执行此操作,那么该方法将无法有效工作。

我唯一的另一个选择是使用JSON索引

这种方法有用吗? 我应该使用自定义指令吗? 有没有更好的方法来解决这个问题?

1 个答案:

答案 0 :(得分:0)

一个选项是将对象直接附加到控制器而不是角度中的$ scope对象。

&#13;
&#13;
var this = ctrl;

ctrl.object //this should attach the object to he scope of the controller. 
&#13;
   <select id="idName" name="name" ng-model"ctrl.object.ListValues" data-ng-options="key as key for (key,value) in ctrl.objectName.ListValues"></select> 
&#13;
&#13;
&#13;

您可以使用上述代码之类的内容访问每个选项,并将它们显示在html中的select元素中。

我是棱角分明的新手,所以如果这不正确我会道歉,但我以前用ngOptions做了类似的事情,这个解决方案似乎在你描述的场景中运作良好。