2013-12-07 16 views

risposta

142

Yes:

L'ambito 'isolare' accetta un hash oggetto che definisce un insieme di proprietà dell'ambito locali derivate dall'ambito genitore. Queste proprietà locali sono utili per valori di aliasing per i modelli. Definizione La gente del posto è un hash della proprietà ambito locale alla sua fonte:

= o =attr - istituire bidirezionale di legame tra una portata locale di proprietà e la proprietà ambito padre di nome definito tramite il valore dell'attributo attr. Se non viene specificato il nome attr, si assume che il nome dell'attributo sia uguale al nome locale. Dato <widget my-attr="parentModel"> e la definizione del widget di scope: { localModel:'=myAttr' }, la proprietà dello scope del widget localModel corrisponderà al valore per il valore di parentModel nell'ambito genitore. Qualsiasi modifica a parentModel si rifletterà in localModel e qualsiasi modifica in localModel si rifletterà in parentModel. Se la proprietà genitore dello scope non esiste, genererà un'eccezione NON_ASSIGNABLE_MODEL_EXPRESSION. È possibile evitare questo comportamento utilizzando =? o =?attr per contrassegnare la proprietà come facoltativo.

Dovrebbe innescare l'errore previsto su ogni digest che colpisce la proprietà campo di applicazione:

parentSet = parentGet.assign || function() { 
// reset the change, or we will throw this exception on every $digest 
lastValue = scope[scopeName] = parentGet(parentScope); 
    throw Error(NON_ASSIGNABLE_MODEL_EXPRESSION + attrs[attrName] + 
    ' (directive: ' + newScopeDirective.name + ')'); 
}; 

//... 


if (parentValue !== scope[scopeName]) { 
    // we are out of sync and need to copy 
    if (parentValue !== lastValue) { 
     // parent changed and it has precedence 
     lastValue = scope[scopeName] = parentValue; 
    } else { 
     // if the parent can be assigned then do so 
     parentSet(parentScope, lastValue = scope[scopeName]); 
    } 
} 
+1

ha un senso, ma perché non fa [la direttiva] (http://plnkr.co/edit/ FxyDVi5JeWyC6B8TX1fk? P = anteprima) genera un'eccezione. la proprietà dell'ambito genitore non esiste e l'assegnazione dell'ambito NON sta utilizzando un '=?' – Nikita

+7

Sembra solo lanciare l'errore quando il valore è impostato, come qui: http://plnkr.co/edit/OSpaC6sPE0hY9yAeFghr?p=preview –

+0

è documentato ovunque nei documenti angularjs ufficiali? – cebor

Problemi correlati