假设我有一个stuff
要注入到myApp
config中的模块:
angular.module('myApp', ['stuff']).
config([function() {
}]);
有两个子模块:
angular.module("stuff", ["stuff.thing1","stuff.thing2"]);
这是第一个:
angular.module('stuff.thing1', []).provider("$thing1", function(){
var globalOptions = {};
this.options = function(value){
globalOptions = value;
};
this.$get = ['$http',function ($http) {
function Thing1(opts) {
var self = this, options = this.options = angular.extend({}, globalOptions, opts);
}
Thing1.prototype.getOptions = function(){
console.log(this.options.apiKey);
};
return {
thing1: function(opts){
return new Thing1(opts);
}
};
}];
});
第二个是相同的,以简化示例:
angular.module('stuff.thing2', []).provider("$thing2", function(){
var globalOptions = {};
this.options = function(value){
globalOptions = value;
};
this.$get = ['$http',function ($http) {
function Thing2(opts) {
var self = this, options = this.options = angular.extend({}, globalOptions, opts);
}
Thing2.prototype.getOptions = function(){
console.log(this.options.apiKey);
};
return {
thing2: function(opts){
return new Thing2(opts);
}
};
}];
});
您会注意到,您可以将它们作为提供者来访问以配置选项:
angular.module('myApp', ['stuff']).
config(['$thing1Provider', '$thing2Provider', function($thing1Provider, $thing2Provider) {
$thing1Provider.options({apiKey:'01234569abcdef'});
$thing2Provider.options({apiKey:'01234569abcdef'});
}]);
如果我们在控制器中,则可以覆盖每个范围,例如:
controller('AppController', ['$scope','$thing1', function($scope, $thing1) {
var thing1 = $thing1.thing1({apiKey:'3kcd894g6nslx83n11246'});
}]).
但是,如果他们总是共享相同的财产怎么办?如何在提供商之间共享某些东西?
angular.module('myApp', ['stuff']).config(['$stuff' function($stuff) {
//No idea what I'm doing here, just trying to paint a picture.
$stuff.options({apiKey:'01234569abcdef'});
}]);
我$stuff
可以同时为$thing1
和注入和配置共享属性$thing2
吗?
如何同时访问$thing1
和$thing2
作为单个模块的扩展?
controller('AppController', ['$scope','$stuff', function($scope, $stuff) {
//Again - no idea what I'm doing here, just trying to paint a picture.
//$thing1 would now be overwrite $stuff.options config above.
var thing1 = $stuff.$thing1.thing1({apiKey:'lkjn1324123l4kjn1dddd'});
//No need to overwrite $stuff.options, will use whatever was configured above.
var thing2 = $stuff.$thing2.thing2();
//Could I even change the default again for both if I wanted too?
$stuff.options({apiKey:'uih2iu582b3idt31d2'});
}]).
将模块插入两个共享这些属性的模块中。
使用提供程序类覆盖属性或从任何范围实例化它们:
angular.module("stuff.things", []).provider("$things", function(){
var globalOptions = {};
this.options = function(value){
globalOptions = value;
};
this.$get = [, function () {
function Things(opts) {
var self = this, options = this.options = angular.extend({}, globalOptions, opts);
}
Things.prototype.returnOptions = function(){
return this.options;
};
return {
things: function(opts){
return new Things(opts);
}
};
}];
});
秘诀: $things.things().returnOptions()
angular.module('stuff.thing1', ['stuff.things']).provider("$thing1", function(){
var globalOptions = {};
this.options = function(value){
globalOptions = value;
};
this.$get = ['$things', function ($things) {
function Thing1(opts) {
var self = this, options = this.options = angular.extend({}, $things.things().returnOptions(), globalOptions, opts);
...
}
return {
thing1: function(opts){
return new Thing1(opts);
}
};
}];
});
问题内容: 我正在将AngularJS与c#mvc一起使用。我有一个主页,用户可以在其中输入一些数据,并将其传递给第二个模块,在该模块中,我将使用这些数据进行处理和决策。我必须使用第二个模块中第一个模块中输入或更新的数据。有人可以帮我实现这个目标吗? 问题答案: 希望以下实现可以帮助您有所了解。
问题内容: 我最近开始使用AngularJS,现在构建应用的方式是这样的: MainController.js SomeController.js Im遇到的问题是范围未在模块之间共享。例如,无法从 MainController 获得变量“ test”。 最佳做法是什么?是否将所有控制器都以1个文件存储在1个模块中? 我如何能有1个页面和2个控制器并在它们之间共享,还是可以将所有内容仅放在一个控制
我正在尝试弄清楚如何在单个IntelliJ项目中的两个模块之间共享包,但我似乎找不到正确的方法。我知道它可以在Eclipse中完成,但我不太精通它。简而言之,我正在尝试重现由AppEngine连接的Android项目创建的相同类型的项目环境。 这是我能说的最好的“问题” 项目A。 模块1;AppEngine GWT其他任何内容 模块2;Android 每个模块在项目的主目录中都有自己的源目录: /
我有一个Maven项目,其中有一个parent-pom项目和3个maven-module项目。其中2个模块是编译成WAR文件的Java-EE web应用程序。其中1个模块包含公共JAVA代码,这些代码在其他2个项目之间共享。共享JAVA代码很容易。 我的问题是如何共享常见的静态资源,如JavaScript、CSS和图像文件,而不在每个web模块中重复它们?我还希望这样做:我可以继续从Eclipse
问题内容: 我想可能有许多角度模块连接到一个shellpage中的不同区域。但是AngularJS中的模块可以彼此“交谈”吗?如果是,怎么办? 问题答案: 模块可以通过多种方式进行交互或共享信息 可以将一个模块注入另一个模块,在这种情况下,容器模块可以访问已注入模块的所有元素。如果您查看有角的种子项目,则会为指令,控制器,过滤器等创建模块,就像这样 angular.module(“ myApp”,
问题内容: 有没有办法在AngularJS中的服务之间共享数据? 用例:来自不同服务的数据聚合 例如,我想要一个service1从REST服务加载一些数据。然后,另一个service2将来自另一个REST API的其他数据添加到service1数据中,以创建数据聚合服务。 我基本上是想根据它们使用的API来分离服务,但是仍然有一个服务来最终保存所有数据。 问题答案: 创建使用延迟库的第三项服务,以