HINWEIS: Ich bin ein neues Mitglied hier, also konnte ich nicht direkt kommentieren und um Klärung bitten.Wie funktioniert Childscope bei einer ng-if-Anweisung? Speziell in einem <SELECT> Element
Also, meine Frage ist: Wie kann ich um arbeiten ng-wenn ein Kind Rahmen für ein ausgewähltes Element zu schaffen?
Ich habe den folgenden Code:
HTML
<select id="project-select"
ng-if="projects.length > 0"
ng-options="project.name for project in projects"
ng-model="currentProject"
ng-change="broadcastChange('project-changed', currentProject)">
</select>
Und mein Controller eingerichtet ist, in folgendem Format: "
function Controller() {
//Do code stuffz
}
angular
.module('app')
.controller('Controller', Controller);
ich aus this Post erfuhr, dass die ng-if "erstellt einen untergeordneten Bereich.
Also selbst wenn sich das Modell ändert, bleibt dieser Teil das gleiche, weil es ein Grundwert ist: (Name nur ein String)
<div id="current-project" class="pull-left">
<strong>Project: </strong>{{currentProject.name}}
</div>
Des Weiteren in dem oben genannten Beitrag gibt ein paar Optionen waren.
a. Ändern Sie einfach auf diese: ng-model="$parent.currentProject"
, die ein wenig hacky
b fühlt. Legen Sie den Objektwert im Controller fest. Ich bin mir nicht ganz sicher, wie das geht. Ich habe das Gefühl, dass es eine einfache Lösung ist, aber ich übertreibe es irgendwie.
Wie auch immer, für jetzt habe ich einfach geändert ng-if
zu ng-show
und das ist das Problem gelöst. Ich versuche jedoch, Angular tiefer zu verstehen, und ich habe das Gefühl, dass dieses Problem ein bisschen besser erklärt werden könnte. Danke im Voraus!
Dies sollte helfen http://stackoverflow.com/questions/21869283/when-to-favor-ng-wenn-vs-ng-show-ng-verstecken –
ja, Bindung an eine Objekt-Eigenschaft ist die richtige Idee @blitz – trickpatty