Ich bin ein Neuling bei angularjs
und ich erstelle eine Webanwendung, um Erfahrung und Praxis zu sammeln. Das Problem, das ich habe, ist, dass $scope.$emit
scheint nicht zu funktionieren, ich bin auf der Suche nach Möglichkeiten, Funktionen zwischen den Controllern zu kontaktieren und bis jetzt habe ich im Internet gefunden, dass $scope.emit
und $scope.on
scheint für diese Art von Aufgabe zu passen, wenn es eine andere gibt Art und Weise, ich würde gerne wissen, sowieso der Code wird wie folgt geschrieben:
loginController.js
(function(angular)
{
var app = angular.module('Organizer');
// inject $scope to the controller in order to try $scope.$emit
app.controller('login', function($http, $scope)
{
// i define the scope like this so i can access inside other functions
var scope = this;
scope.processing = false;
scope.message = null;
scope.submit = function()
{
scope.processing = true;
// store data for post
var post = {
username: scope.username,
password: scope.password
};
// send post data
$http.post('api/default/login', post).
success(function(data, status)
{
// hide processing feedback and show the result
scope.processing = false;
scope.message = data.message;
}).
error(function(data, status)
{
scope.processing = false;
});
};
// Function i use to emit
this.closeDialog = function()
{
$scope.$emit('closeDialog');
};
});
})(angular);
siteController.js
(function(angular)
{
var app = angular.module('Organizer');
app.controller('site', function($mdDialog, $scope)
{
this.menu = ['test1', 'test2'];
this.dialog = function()
{
$mdDialog.show({
templateUrl: 'site/login',
});
};
// this does not seem to be working
$scope.$on('closeDialog', function(event)
{
console.log('close dialog');
});
});
})(angular);
Hinweis : Ich benutze eckiges Material und Sie können sehen, ich zeige einen Dialog, der ein Login ist, der Login hat seinen Controller (ich wollte es den gleichen Site - Controller verwenden, aber ich weiß nicht wie) und dieser Dialog hat eine Taste, die die Funktion closeDialog()
in loginControler ruft und sollte den Dialog, aber jetzt zu Testzwecken ich gerade Anmeldung mich, wenn es ruft das Ereignis
Toptals Erklärung von '$ emit' vs' $ broadcast' würde helfen: http://www.toptal.com/angular-js/videos/javascript-video-tutorial-understanding-broadcast-and-emit-in- anglejs –