У меня есть контроллер, который выполняет некоторые вызовы БД и соответственно загружает контент в мою $scope
. Все работает отлично. Когда вызовы завершены, я запускаю JS внутри контроллера в обратном вызове, чтобы настроить высоту и другие атрибуты моего приложения. К сожалению, я запускаю этот JS в нескольких контроллерах.
Я хотел бы разместить сценарий в директиве, чтобы я мог запускать директиву в обратном вызове контроллеров и иметь только JS в одном месте. Помимо этого, "правильный путь", он будет значительно упрощен.
При совместном использовании кода между несколькими контроллерами используйте службу.
Пример кода из документов AngularJS:
angular.
module('myServiceModule', []).
controller('MyController', ['$scope','notify', function ($scope, notify) {
$scope.callNotify = function(msg) {
notify(msg);
};
}]).
factory('notify', ['$window', function(win) {
var msgs = [];
return function(msg) {
msgs.push(msg);
if (msgs.length == 3) {
win.alert(msgs.join("\n"));
msgs = [];
}
};
}]);
Директивы предназначены для использования в HTML, а не для сценариев внутри контроллеров.