Angularjs: ng-opciones con grupo

Tengo esta situación de árbol de un nivel:


donde el json es:

  [ {"ID":"1", "IDPARENT":"0", "TIPIS":"", "DESC":"GroupName1"}, {"ID":"2", "IDPARENT":"1", "TIPIS":"GroupName1", "DESC":"CHILDNAME1"}, {"ID":"3", "IDPARENT":"0", "TIPIS":"", "DESC":"GroupName2"} ] 

el problema es que esto crea los grupos opcionales con sus hijos, pero también repite las raíces:

 - GroupName1 - GroupName2 [ GroupName1 ] - CHILDNAME1 [ GroupName2 ] 

quiero producir:

 [ GroupName1 ] - CHILDNAME1 [ GroupName2 ] 

    La agrupación no funciona del todo así, si cambias tu json a algo como esto:

     [ {"ID":"1", "TIPIS":"GroupName1", "DESC":"name"}, {"ID":"2", "TIPIS":"GroupName1", "DESC":"name1"}, {"ID":"3", "TIPIS":"GroupName2", "DESC":"name2"}, {"ID":"4", "TIPIS":"GroupName1", "DESC":"name3"}, ] 

    Luego obtendrás la agrupación de la manera que quieras

    jsFiddle: http://jsfiddle.net/rtCP3/182/

    El menú desplegable simple que puede mostrar elementos con y sin grupos, y también puede configurar algunos elementos como deshabilitados: Aquí está plunk: https://plnkr.co/edit/uhsn4lmzssi6rrijPEAp?p=preview

       

    Estaba buscando la misma pregunta y encontré una mejor respuesta. Uno puede usar la función para devolver datos cuando lo necesite, como en la siguiente consulta getGarageName

     ng-options="car.id as car.name + ' (' + car.color + ')' group by getGarageName(car.garageId) for car in cars" // this is the data cars = [ {"id": 1, "name": "Diablo", "color": "red", "garageId": 1}, {"id": 2, "name": "Countach", "color": "white", "garageId": 1}, {"id": 3, "name": "Clio", "color": "silver", "garageId": 2}, ... ] garages = [ {"id": 1, "name": "Super Garage Deluxe"}, {"id": 2, "name": "Toms Eastside"}, ... ] 

    http://www.wenda.io/questions/2597799/angular-js-select-with-ngoptions-label-the-optgroup.html