具有功能的角度扩展模块(最佳实践)

时间:2014-08-30 17:58:35

标签: javascript angularjs

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

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

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.'});

扩展模块和功能是最佳做法吗?

P.S。请排名这个问题,我无法获得15点声望。谢谢!

1 个答案:

答案 0 :(得分:0)

总之没有。向rootScope添加函数和数据结构最终将会对您产生影响。它几乎只是全局变量,这是设计软件的一种可怕方式,因为它创建了高耦合。使用可以封装数据和方法的服务要好得多。定义您希望在服务中的模块/控制器/等之间共享的功能和数据,然后您可以将这些服务简单地注入到其他想要使用它们的地方。