Domanda

Vorrei sapere come ottenere un elenco di tutti gli ambiti per bambini date uno scopo genitore.Tutto quello che riesco a trovare dalle proprietà dello scopo sono $$ Childhead, $$ Childtail, $$ Nextsibling e $$ prevvibili.

L'approccio che sto usando ora è ottenere la testa del bambino dal genitore e quindi usare il Nextsibling per ottenere il prossimo figlio fino a quando Nextsibling è nullo.

C'è un approccio migliore? Dato che voglio chiamare un metodo [GetModel] su tutti i bambini, c'è ancora un modo migliore di fare questo?

È stato utile?

Soluzione

.

Le direttive figlio utilizzano ambiti isolati e in tali sono i propri valori che non sono visibili dal genitore. Voglio accedere a questi valori dall'ambito dei genitori.

Il "modo angolare" per affrontare il problema di "ambiti genitore che necessitano di accesso agli ambiti infantili" è spostare il modello nel genitore e avere gli scopi figlio fanno riferimento alle proprietà / dati dei genitori (piuttosto che agli ambiti per bambini avere le proprie proprietà / copie locali). Ad esempio, questo è il modo in cui ci occupiamo di NG-REPEAT se ogni iterazione contiene, ad esempio, un elemento modulo di input (ad esempio, ogni iterazione richiede un database a due vie): difficoltà con il modello NG, NG-ripetizione e ingressi

Con le direttive, definire prima una serie di oggetti nell'ambito dei genitori, quindi hanno ciascun ambito figlio isolato accesso che l'array del genitore portata (o un oggetto individuale) utilizzando la notazione "=" (I.e., Notazione di banca dati a due vie). Poiché un oggetto viene condiviso, gli scopi isolati si rivolgono agli oggetti genitore (non riceveranno una copia locale). Ora, tutte le modifiche apportate alle proprietà degli scopi per bambini stanno effettivamente modificando le proprietà del gruppo principale.

Altri suggerimenti

Tutti gli scopi angolari sono collegati a Dom Element, è possibile iniziare a ispezionare il bambino usando l'elemento corrente fino a qualsiasi bambino che si desidera raggiungere.Una volta lì, usa la funzione sotto la funzione per ottenere l'ambito.

angular.element('#5th_element').scope();
.

In AngularJS 1.3.2, un metodo countChildScopes è stato aggiunto al modulo NGMock:

/**
* @ngdoc method
* @name $rootScope.Scope#$countChildScopes
* @module ngMock
* @description
* Counts all the direct and indirect child scopes of the current scope.
*
* The current scope is excluded from the count. The count includes all isolate child scopes.
*
* @returns {number} Total number of child scopes.
*/
function countChildScopes(scope) 
  {
  // jshint validthis: true
  var count = 0; // exclude the current scope
  var root = scope || angular.element(document).injector().get('$rootScope');
  var pendingChildHeads = [root.$$childHead];
  var currentScope;

  while (pendingChildHeads.length) 
    {
    currentScope = pendingChildHeads.shift();

    while (currentScope) 
      {
      count += 1;
      pendingChildHeads.push(currentScope.$$childHead);
      currentScope = currentScope.$$nextSibling;
      }
    }

  return count;
  }
.

Utilizzare un oggetto come valore di ritorno per ottenere gli ID:

function enumerateChildScopes(scope) 
  {
  // jshint validthis: true
  var enum = {}; // exclude the current scope
  var root = scope || angular.element(document).injector().get('$rootScope');
  var pendingChildHeads = [root.$$childHead];
  var currentScope;

  while (pendingChildHeads.length) 
    {
    currentScope = pendingChildHeads.shift();

    while (currentScope) 
      {
      enum["scope"+pendingChildHeads.length] = currentScope.$id;
      pendingChildHeads.push(currentScope.$$childHead);
      currentScope = currentScope.$$nextSibling;
      }
    }

  return enum;
  }
.

Riferimenti

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top