Javascript 带函数的角度扩展模块(最佳实践)

Javascript 带函数的角度扩展模块(最佳实践),javascript,angularjs,Javascript,Angularjs,我想用UI逻辑扩展一些模块 例如,simple模块,可以添加警报和清除警报。 并在其他模块中使用它 var MessageBox = angular.module('MessageBox', ['ui.bootstrap']); MessageBox.controller('MessageBoxController', ['$rootScope', function ($rootScope) { $rootScope.alerts = []; $rootScope.addAle

我想用UI逻辑扩展一些模块

例如,simple模块,可以添加警报和清除警报。 并在其他模块中使用它

var MessageBox = angular.module('MessageBox', ['ui.bootstrap']);

MessageBox.controller('MessageBoxController', ['$rootScope', function ($rootScope) {
    $rootScope.alerts = [];
    $rootScope.addAlert = function (alert) {
        $rootScope.alerts.push(alert);
    };
    $rootScope.closeAlert = function (index) {
        $rootScope.alerts.splice(index, 1);
    };
}]);
在其他模块中结束使用:

var App = angular.module('App', ['MessageBox']);
。。。和控制器:

console.log("$scope.alerts : " + $scope.alerts);
addAlert({type: 'success', msg: 'Message.'});
这是扩展模块和功能的最佳实践吗


另外,请给这个问题排名,我不能得到15分。谢谢

简言之,不。向rootScope添加函数和数据结构最终会让您分崩离析。它几乎只是全局的,这是一种糟糕的软件设计方法,因为它会产生高度耦合。最好使用能够封装数据和方法的服务。定义您希望在服务中的模块/控制器/etc之间共享的功能和数据,然后您可以简单地将这些服务注入其他想要使用它们的地方