10

我在我的应用程序中定义了许多可重用的功能,每个控制器都使用 $scope 变量。我不必每次都创建一个共享服务,有没有办法扩展 $scope 变量,以便我可以在任何地方使用我的扩展代码?

就像是:

//I've tested this out and it doesn't work, but this is what I want to do.
angular.module('App',[]).config(['$scopeProvider',function($scope) {
  $scope.method1 = function() { ... };
  $scope.method2 = function() { ... };
}]);

然后稍后:

var HomeCtrl = function($scope) {
  $scope.method1();
};

这可能吗?还是我需要创建一个共享服务,然后让 $scope 从每个控制器的第一行扩展?

4

1 回答 1

23

而不是.configtry .run,这将完全符合您的要求。

angular.module('App', []).run(['$rootScope', function($rootScope) {
  $rootScope.foo = function() {
     alert("WIN!");
  };
}]);

angular.module('App').controller('HomeCtr', ['$scope', function($scope) {
  $scope.foo(); #will call the alert
}]);

注意我只是module.controller因为我喜欢才使用它,var HomeCtrl = function($scope) {会有同样的效果。

于 2012-08-14T17:01:04.023 回答