Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
AngularJS拦截并扩展控制器$scope_Angularjs - Fatal编程技术网

AngularJS拦截并扩展控制器$scope

AngularJS拦截并扩展控制器$scope,angularjs,Angularjs,我在应用程序中定义了许多可重用的功能,每个控制器都使用$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.method

我在应用程序中定义了许多可重用的功能,每个控制器都使用$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吗?

而不是
.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){
将具有相同的效果。

如果我只需要一组控制器而不是全部继承rootScope,该怎么办?另外,如果我希望一组控制器继承一些不是rootScope的父范围,该怎么办?所有控制器都将继承rootScope,因为它们是子控制器。您只需使用ng controller和在它内部指定的控制器(html)将继承自它
,但尽管这种方法有效,但它完全依赖于控制器的嵌套。只需使用服务来扩展范围。@matsko-您有“使用服务扩展范围”的示例吗?