Ich glaube, ich etwas über $ scope fehle. Ich habe einige NG-Hide/Shows, die eine Variable in einem Top-Nav haben. Innerhalb einer NG-Ansicht, die über die App-Konfigurationsfunktion mit Controllern verbunden ist. Mein Nav-Code befindet sich in "NavController". Aber ich habe eine Seite in einer Ansicht außerhalb des Navigationsbereichs, die mit "AppointmentController" verknüpft ist und den Code ausführt, der sich um das Festlegen eines Termins kümmert. Nachdem Sie einige Schritte durchlaufen haben, können Sie sich anmelden, dieser Code ist innerhalb der AppointmentController-Ansicht, aber ich habe dies getan -
EDIT - Ich habe gerade festgestellt, die Eingabe unten muss in einem separaten Controller sein. Wenn ich es an den NavController anschließe, möchte ich, dass appTLogin() die Hauptansichtsdaten ändert, die alle in einem separaten Controller sind.
<input ng-controller="NavController" ng-click="apptLogin(email)" value="Login and Continue" class="btn btn-default pull-left" >
$scope.apptLogin = function(email){
$http({
method: 'POST',
data: {email: email},
url: '/common_includes/ajax/validateUser.php',
}).then(function successCallback(response) {
if(response.data.status == 0){
var login_message = '<div class="alert alert-danger" role="alert">'+response.data.message+'</div>';
$('#login_modal .modal-body').html(login_message);
$('#login_modal').modal();
$interval(function(){
$('#login_modal').modal('hide');
}, 1400, 1);
}
if(response.data.status == 1){
$scope.appt_history = true;
console.log($scope);
var login_message = '<div class="alert alert-success" role="alert">'+response.data.message+'</div>';
$('#login_modal .modal-body').html(login_message);
$('#login_modal').modal();
$interval(function(){
$scope.click_login = false;
$('#login_modal').modal('hide');
}, 1400, 1);
}
Der Code läuft alle. Diese Zeile hier ist, was die Ausblendung/einblenden sollte, aber es ist nicht. -
$scope.appt_history = true;
Wenn ich verwirrt bin zwar, weil, wenn console.log ($ scope) nach der obigen Linie, ich sehe alle NavController Variablen und $ scope.appt_history ist == wahr, noch hide/show nicht zu ändern . Was fehlt mir hier?
Somit fixiert das Problem jetzt? – Matthias
Nein ... Ich habe Elemente in diesem Nav, die alle an einen Controller angeschlossen sind ... Ich dachte, dass alles in diesem Bereich stattfinden würde. Aber jetzt brauche ich eine Schaltfläche, die an einen anderen Controller angeschlossen ist, um eine show/hide-Variable zu ändern, die sich im Nav-Controller befindet. Grundsätzlich zwei Controller mit unterschiedlichen Bereichen. Ich weiß, das sollte vielleicht mit einem "Service" gemacht werden, aber nicht sicher, wie man es in diesem speziellen Fall benutzt. –
Ganz nebenbei kann die Verwendung von JQuery zum Anzeigen/Verbergen von Material zu seltsamen Scoping-Problemen in angular führen. Sie müssen möglicherweise $ $ scope. $ Apply 'viele Dinge, um Dinge in eckigen Umfang zu bekommen. Ich empfehle die Verwendung von benutzerdefinierten Direktiven für Modals oder UI-Bootstrap, da es viele dieser JQuery in ein winkelfertiges Formular umschließt. – ryanyuyu