2014-08-30 52 views
1

我想用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

[Angular best practices](http://stackoverflow.com/q/20802798/1959948) – Dalorzo 2014-08-30 18:02:16

回答

0

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