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

.config試す代わりに.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 に答える