Ng-ripetizione annidata

Ho un file XML fittizio:

                                                                 

Usando questa libreria http://code.google.com/p/x2js/ la converto in json, in myData variabile

  { "Week" : { "Day" : [{ "Job" : [{ "Job" : { "Job" : { "Job" : { "_name" : "eat breakfast" }, "_name" : "prepare breakfast" }, "_name" : "get dressed" }, "_name" : "wake up" }, { "_name" : "work 9-5" } ], "_dow" : "1", "_templateDay" : "Monday" }, { "Job" : [{ "Job" : { "Job" : { "Job" : { "_name" : "eat breakfast" }, "_name" : "prepare breakfast" }, "_name" : "get dressed" }, "_name" : "wake up" }, { "_name" : "work 9-5" }, { "_name" : "football" } ], "_dow" : "2", "_templateDay" : "Tuesday" }, { "Job" : [{ "Job" : { "Job" : { "Job" : { "_name" : "eat breakfast" }, "_name" : "prepare breakfast" }, "_name" : "get dressed" }, "_name" : "wake up" }, { "_name" : "work 9-5" } ], "_dow" : "3", "_templateDay" : "Wednesday" }, { "Job" : [{ "Job" : { "Job" : { "Job" : { "_name" : "eat breakfast" }, "_name" : "prepare breakfast" }, "_name" : "get dressed" }, "_name" : "wake up" }, { "_name" : "work 9-5" }, { "_name" : "football" } ], "_dow" : "4", "_templateDay" : "Thursday" }, { "Job" : { "_name" : "go to pub" }, "_dow" : "5", "_templateDay" : "Friday" }, { "Job" : { "_name" : "work 9-5" }, "_dow" : "6", "_templateDay" : "Saturday" }, { "_dow" : "7", "_templateDay" : "Sunday" } ], "_number" : "2013-W45" } } 

Il giorno può avere un numero qualsiasi di lavori, i lavori possono essere annidati e contenere un numero qualsiasi di altri lavori.

Ora usando questo codice

 

{{day._dow}} - {{day._templateDay}}

Posso elencare i giorni, funziona. Mi aspetterei che con il seguente codice

 

{{day._dow}} - {{day._templateDay}} {{job._name}}

Posso elencare giorni e lavori di primo livello per quel giorno, ma non funziona. (Per elencare i lavori nidificati sarebbe il prossimo compito, non chiedendo di questo ora).

Quindi, come elencare almeno i lavori di primo livello? Anche nel formato JSON, vedo che alcuni lavori sono Objects e alcuni sono Arrays . Come gestire entrambe le situazioni?

PS .: usando angular 1.2.0-rc.3

È meglio avere un formato JSON corretto invece di utilizzare direttamente quello convertito da XML.

 [ { "number": "2013-W45", "days": [ { "dow": "1", "templateDay": "Monday", "jobs": [ { "name": "Wakeup", "jobs": [ { "name": "prepare breakfast", } ] }, { "name": "work 9-5", } ] }, { "dow": "2", "templateDay": "Tuesday", "jobs": [ { "name": "Wakeup", "jobs": [ { "name": "prepare breakfast", } ] } ] } ] } ] 

Ciò renderà le cose molto più facili e facili da scorrere.

Ora puoi scrivere il ciclo come –

 
{{day.dow}} - {{day.templateDay}} Jobs:
  • {{job.name}}

Se si dispone di un object JSON nidificato di grandi dimensioni e viene utilizzato su più schermi, è ansible che si verifichino problemi di prestazioni nel caricamento della pagina. Vado sempre per piccoli oggetti JSON singoli e interrogano gli oggetti correlati come carichi pigri solo dove sono richiesti.

puoi ottenerlo usando ng-init

  {{s.name}} 
{{p.name}}

Il codice sul lato controller dovrebbe apparire come sotto

 $scope.getPresenters = function(id) { return SessionPresenters.get({id: id}); }; 

Mentre la fabbrica API è la seguente:

 angular.module('tryme3App').factory('SessionPresenters', function ($resource, DateUtils) { return $resource('api/session.Presenters/:id', {}, { 'query': { method: 'GET', isArray: true}, 'get': { method: 'GET', isArray: true }, 'update': { method:'PUT' } }); }); 

Crea un tag fittizio che non verrà visualizzato nella pagina ma funzionerà come supporto per ng-repeat:

 {{featureItem.feature}}