在AngularJS中,如何在控制器中调用指令来执行任务

In AngularJS, how can I call a directive inside a controller to perform a task?

本文关键字:执行任务 指令 调用 AngularJS 控制器      更新时间:2023-09-26

我有一个控制器,它执行一些DB调用并相应地将内容加载到我的$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中使用,而不是在控制器中编写脚本。