Hat das Fragezeichen nach equals eine besondere Bedeutung? dh:Was bedeutet "=?" in angleJS-Direktive isolieren Scope-Deklaration?
bedeutet die oben genannte 'nicht erhöhen Fehler, wenn' foo 'kann nicht gelöst werden?
Hat das Fragezeichen nach equals eine besondere Bedeutung? dh:Was bedeutet "=?" in angleJS-Direktive isolieren Scope-Deklaration?
bedeutet die oben genannte 'nicht erhöhen Fehler, wenn' foo 'kann nicht gelöst werden?
Der ‚Isolat‘ Anwendungsbereich nimmt ein Objekt-Hash, das einen Satz von lokalen Bereichseigenschaften abgeleitet von dem übergeordneten Bereich definiert. Diese lokalen Eigenschaften sind nützlich für das Aliasing von Werten für Vorlagen. Lokale Definition ist ein Hash der lokalen Bereich Eigenschaft auf die Quelle:
=
oder=attr
- bidirektionale Bindung zwischen einer lokalen Bereich Eigenschaft und der übergeordneten Bereich Eigenschaft des Namen über den Wert desattr
Attributs definiert aufgebaut. Wenn keinattr
Name angegeben wird, wird angenommen, dass der Attributname mit dem lokalen Namen identisch ist. Gegeben<widget my-attr="parentModel">
und Widget-Definition vonscope: { localModel:'=myAttr' }
, dann Widget-Bereich EigenschaftlocalModel
wird den Wert vonparentModel
auf dem übergeordneten Bereich widerspiegeln. Alle Änderungen anparentModel
werden inlocalModel
widergespiegelt und alle Änderungen inlocalModel
werden inparentModel
widergespiegelt. Wenn die Eigenschaft des übergeordneten Bereichs nicht vorhanden ist, wird eine Ausnahme vom Typ NON_ASSIGNABLE_MODEL_EXPRESSION ausgelöst. Sie können dieses Verhalten mit=?
oder=?attr
vermeiden, um die Eigenschaft als optional zu kennzeichnen.
Es sollte die erwarteten Fehler auslösen auf jedem, dass verdauen beeinflusst den Umfang Eigenschaft:
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]);
}
}
Das macht Sinn, aber warum nicht [diese Richtlinie] (http://plnkr.co/edit/ FxyDVi5JeWyC6B8TX1fk? P = Vorschau) Exception auslösen. Parent-Bereichseigenschaft ist nicht vorhanden und die Bereichszuweisung verwendet kein '=?' – Nikita
Es scheint nur den Fehler zu werfen, wenn der Wert gesetzt ist, wie hier: http://plnkr.co/edit/OSpaC6sPE0hY9yAeFghr?p=preview –
ist das irgendwo in den offiziellen angularjs docs dokumentiert? – cebor