Это мой первый пост о переполнении стека, так что я действительно новичок в AngularJS и ASP.Net и у меня много проблем с $ rootcope. $ Emit. Из того, что я прочитал в Интернете, $ rootcopes являются родительскими областями, поэтому все значения, отображаемые там, видимы для всех контроллеров, а шаблоны и области являются функциями внутри контроллеров. Кажется, что вы можете «передать» через иерархию контроллеров вызов к другому контроллеру с помощью $ rootscope. $ Emit («Имя $ rootscope. $ Для имени функции») $rootscope.$on
прослушивает этот вызов и затем делает все, что угодно в его функции. У меня проблемы с тем, когда я делаю
$rootscope.$emit("LoadPrintDetailsModal", {});
кажется, что никогда не достигнет
$rootscope.$on("LoadPrintDetailsModal", function(event,args) {}.
Итак, вопрос в том, не понимаю ли я, как $ emit или как работает иерархия контроллеров, или в моем коде проблема?
Я уже пытался использовать emit, и я нажал на отладчик в файле indexController.js после вызова кнопки в моем файле Index.cshtml, но потом, когда я сделал
$rootScope.$emit("LoadPrintDetailsModal", {});
он не попадает в мой файл printableController.js, где
$rootScope.$emit("LoadPrintDetailsModal", function (event, args) {});
// (Index.cshtml) Кнопка в файле Index.cshtml, который вызывает функцию «LoadPrintModal» // в indexController
<button type="button" data-toggle="modal" data-target="#dvPrintModal"
ng-click="LoadPrintModal()">
Print
</button>
// (indexController.js) scope.LoadPrintModal в indexController.js, который пытается
// отправить "LoadPrintDetails" в $ rootcope.% on ("LoadPrintDetailsModal",
// функция (событие, аргументы) в printableçontroller.js
$scope.LoadPrintModal = function () {
debugger;
$rootScope.$emit("LoadPrintDetailsModal", {});
};
// (printableController.js) файл, в котором находится rootScope.on и должен получить emit
app.controller('PrintableController', function ($scope, $rootScope) {
$rootScope.$on("LoadPrintDetailsModal", function (event, args) {
debugger;
$scope.printModal();
});
$scope.printModal = function () {
console.log("Hello World");
};
)};
Ожидаемым результатом должен быть консольный журнал hello world, и мы должны запустить отладчик в файле printableController.js