У меня есть приложение на основе угловой, который я инициализировать так:Как получить экземпляр контроллера, который был создан AngularJS?
myapp.init = (function() {
'use strict';
var angularApp = angular.module('myapp', [])
.directive('homeIterationDirective', function() {
return function (scope, element, attrs) {
var isTopCard = scope.$last ? true : false;
cards.initSingleSwipe(element.get(0), function (event) {
// I want to call indexPageController.onSwiped(event) here!
}, isTopCard);
};
})
.directive('homeDirective', function() {
return function (scope, element, attrs) {
cards.initPanel(element, function (event) {
// I want to call indexPageController.onButtonPressed(event) here!
});
};
});
angularApp.factory('AjaxService', myapp.services.AjaxService);
angularApp.controller('IndexPageController', ['$scope', '$http', '$sce', 'AjaxService', myapp.pages.IndexPageController]);
}());
Мой контроллер выглядит следующим образом:
myapp.pages.IndexPageController = function ($scope, $http, $sce, MyService) {
'use strict';
var somevalue = {};
this.onSwiped = function (event) {
doSomethingWith(event, somevalue);
};
this.onButtonPressed = function (event) {
doSomethingWith(event, somevalue);
};
};
В 2 директивы homeIterationDirective
и homeDirective
У меня есть 2 обратные вызовы cards.initSingleSwipe
и cards.initPanel
. Внутри этих обратных вызовов я хочу вызвать общедоступные методы моего контроллера, но у меня нет экземпляра, доступного для Angular, созданного с IndexPageController
. Как я могу это достичь?
Где вы хотите назвать этот метод из? Обычно методы, определенные внутри контроллера, доступны для соответствующей области. –
@DarinDimitrov Я хочу назвать это из того места, где я инициализирую контроллер, поэтому прямо под 'angularApp.controller (...)' – Timo
Просто позвоните 'this.blah()' – Chandermani