是否有可能在AngularJS中使用基于配置更改的不同模块?
Is it possible to use a different modules in AngularJS based on a config change?
我有点理解DI如何在AngularJS中与模块一起工作,我希望能够利用这一点,根据应用程序的环境使用不同的模块。
例如,我想做一个既可以在移动设备(使用Phonegap)上运行,也可以在普通桌面浏览器上运行的东西。
有一个业务功能,我想用它来访问数据。在设备上,我只想让它查询设备上的本地数据库。对于桌面浏览器版本,我希望它查询web服务。
例如,我想要两个可以互换的服务:
angular.module('myDataServiceLocalStorage', [])
.factory('dataSrv', [function () {
return {
getOrders: function () {
//get from database
}
};
} ])
;
angular.module('myDataServiceWebService', [])
.factory('dataSrv', [function () {
return {
getOrders: function () {
//get from web service
}
};
} ])
;
在我的angular控制器中,我可以注入myDataServiceLocalStorage或myDataServiceWebService来访问getOrders
函数,但我如何才能更好地配置它,以便在所有控制器中使用其中一个或另一个?
我不一定需要它来自动检测环境,但是有没有一种方法可以做到这一点,这样我就不必在每次准备部署项目时全局搜索和替换每个模块引用?
我在考虑做一些关于提供商的事情,但我很困惑,我不认为这是他们的主要目的(看起来Angular提供商只是在实例化之前修改一个现有的服务)
这样的事情可能吗?
我有一个类似的需求,我所做的是为每个设备创建单独的工厂。
app.factory("deviceOneFactory", function(){
var renderOne = function(params) {
// logic for rendering typeOneChart
};
return {
render : renderOne
}
})
app.factory("deviceTwoFactory", function(){
var renderTwo = function(params) {
// logic for rendering typeTwoChart
};
return {
render : renderTwo
}
})
所以你有以上的工厂,返回相同的函数名集合,所以它实现了一个接口。
,然后有一个父工厂,使应用程序的其他部分不知道这部分
app.factory("deviceFactory", function(){
var localFactory ;
var deviceFactory = function(){
switch(devicetype) {
case 'one':
localFactory = typeOneDevice;
break;
case 'two':
localFactory = typeTwoDetive;
break;
default:
throw exception("invalid device type : " + deviceType);
}
}
var render = function(params) {
localFactory.render();
};
return {
render : render
}
})
注意:上面的代码是不精确的,它只是给你一个想法。
相关文章:
- RequireJS向模块传递配置总是返回undefined
- 使用在子模块内部的父模块上定义的常量's配置
- webpack配置警告和错误:;模块解析失败”;
- 路径和填充程序的模块配置
- 使用Angular JS将常量注入其他模块配置
- 如何配置 gulpjs,以便 ngrok 模块可用于为 pagespeed insight 插件提供 url
- 设置 npm 模块配置的最佳方法
- 配置需要 js 才能在 javascript 中加载 AMD 模块
- AngularJS 我应该在哪里设置或存储模块的配置
- 如何使用 RequireJS 构建多个模块,使用一个带有覆盖的物理配置文件
- 如何访问模块配置中的工厂
- RequireJS:在加载库模块后自动加载配置脚本
- AngularJS-如何在配置函数中使用$routeProvider和自定义模块
- 如何在模块配置中使用Angular.js服务实例并保持相同的实例
- node_modules中编译模块的Webpack配置
- AngularJS模块中的多重配置
- 模块是否应该在express.js的所有路由中使用app.use进行配置
- 是否可以使用$logProvider登录模块的配置块
- 用mocha测试依赖于环境变量process.env.APP_ENV的配置模块
- 我应该如何在AngularJS中配置模块