Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/382.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/20.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
Javascript 角模私有成员_Javascript_Angularjs_Angularjs Module - Fatal编程技术网

Javascript 角模私有成员

Javascript 角模私有成员,javascript,angularjs,angularjs-module,Javascript,Angularjs,Angularjs Module,在AngularJS中,是否可以创建专用控制器或服务,这些控制器或服务可以在定义它们的模块中使用,但不能由注入它们的另一个模块使用 例如,PrivateController是否可以设置为子模块专用: angular.module('Child',[]) .controller('PublicController',函数($scope){ $scope.children=['Bob','Sue']; }) .controller('PrivateController',函数($scope){ $s

在AngularJS中,是否可以创建专用控制器或服务,这些控制器或服务可以在定义它们的模块中使用,但不能由注入它们的另一个模块使用

例如,PrivateController是否可以设置为子模块专用:

angular.module('Child',[])
.controller('PublicController',函数($scope){
$scope.children=['Bob','Sue'];
})
.controller('PrivateController',函数($scope){
$scope.redHeadedStepChildren=['Billy','Mildred'];
})
angular.module('Parent',['Child']))

{{child}}
{{child}}

,无法在当前版本的AngularJS中创建“私有”服务。曾讨论过对私有(模块范围)服务的支持,但尚未实现


到目前为止,给定模块上公开的所有服务对所有其他模块都是可见的。

对于真正的私有装饰行为,@pkozlowski.opensource的正确答案是。但是,您可以在某种程度上模拟这种行为

接近所需行为的一种方法是创建一个应用程序所有其他部分都不知道的模块,该模块包含所有保持私有的服务/控制器/指令。然后,您将向其他开发人员公开的模块可以使用“私有”模块作为依赖项

例如:

MyModule.js

angular.module("my.module.private_members", [])
.provider("PrivateService", function() { ... });

angular.module("my.module", ["my.module.private_members"])
.provider("PublicService", function($PrivateServiceProvider) { ... });
Main.js

angular.module("app", ["my.module"])

// The following line will work.
.config(function($PublicServiceProvider) { ... });

// The following line causes an error
.config(function($PrivateServiceProvider) { ... });
当然,如果
“app”
模块的开发人员意识到然后将
“my.module.private_members”
模块作为
“app”
模块的直接依赖项包括在内,则这不起作用


这个例子应该扩展到控制器。

这里有一个提琴来说明这一点:jsfiddle.net/6uuux843h/1