Ich habe ein Formular mit angularJs, alle Code ist auf meinem Plunker am Ende der Frage verfügbar.
in meinem Controller ich habe
$scope.showTelfield= false; $scope.showEmailfield= false;
in meiner Form und für Telefonfeld und E-Mail-Feld i`m mit:
ng-show="showTelField" ng-show="showEmailField"
diese Werte wahr sein sollten, wenn der Benutzer sich von der Auswahl Wählen Sie die Optionen aus, wie sie im Controller vorgesehen sind.
in html
<select class="form-control c-select" name="select" ng-model="feedback.myChannel" ng-options="channel.value as channel.label for channel in channels">
<option value="">Select a method</option>
</select>
in Controller:
$scope.feedback = {
myChannel: "",
firstName: '',
lastName: '',
agree: false,
email: ''
};
$scope.channels = [{
value: "Tel",
label: "Tel"
}, {
value: "Email",
label: "Email"
}, {
value: "Tel & Email",
label: "Tel & Email"
}];
//Telling browser to view telephone or Email feild if needed..
if($scope.feedback.myChannel === "Tel" || $scope.feedback.myChannel === "Tel & Email"){
$scope.showTelField = true }
if($scope.feedback.myChannel === "Email" || $scope.feedback.myChannel === "Tel & Email"){
$scope.showEmailField = true }
der Wert von $ scope.feedback.myChannel von einer leeren Zeichenfolge ändert sich auf "Tel", "E-Mail" oder „Tel & Email "basierend auf der benutzerauswahl und ich zeige das innerhalb einer extra div nur für entwicklungszwecke, um sicherzustellen, dass sie sich bei der benutzerauswahl ändern.
aber alle if-Anweisungen funktionieren nicht, obwohl sich der Wert von $ scope.feedback.myChannel entsprechend dem angezeigten div ändert, den ich für die Entwicklung mache. irgendeine idee warum ist das?
Sie können meinen Code in meinem Plunker Here is my plunker
und hier ist ein Screenshot der der Seite
Vielen Dank .. bitte wissen, dass: ng-show = "feedback.agree && (feedback.myChannel == 'Tel' || feedback.myChannel == 'Tel & Email')"> funktioniert auch! Y? Ich kann das gewünschte Ergebnis durch einige Lösungen erreichen, aber meine Frage ist, wie kann ich feedback.myChannel in html verwenden und kann es nicht als $ scope.feedback.myChannel im Controller verwenden? und wenn du sagst: es gibt keine Möglichkeit zu zeigen, dass TelField und showEmailField wahr sind, da du sie nicht auf wahr einstellst .. aber wenn du eine Option wählst, setze feedback.myChannel auf einen Wert .. gehe zu ur bottle und benutze ng- zeige wie oben. –
und ohne all das, schau in das angezeigte div auf der rechten Seite zeigt es, dass feedback.myChannel einen Wert nach Auswahl nimmt .. und das ist, was meine if-Statements sagen .. ändern showTelField und showEmailField zu true, wenn feedback.myChannel ein Wert. !!! –
Nun, ich bin mir nicht sicher, ob es funktioniert .. Ich habe es nicht einmal getestet, weil "ng-show" eine schlechte Übung ist, du solltest 'ngIf' oder ** BETTER **' ngSwitch' verwenden, was genau dafür gemacht wurde Art der Sache. Und für deine Frage lautet die Antwort: ** no **, die Werte ('showTelField' &' showEmailField') können nicht wahr sein, da du keine Möglichkeit gefunden hast, sie wahr zu machen .. was ist das Problem mit der Lösung oben? Was meinst du, wenn du sagst "Ich kann die Variable nicht in meinem Controller verwenden" ** ???? – developer033