【发布时间】:2016-04-27 16:40:06
【问题描述】:
我正在寻找将IOC 添加到我的angularjs 应用程序的方法。
我的应用是多租户应用,我需要为注册名相同的不同租户使用不同的服务。
我也在使用TypeScript,它适用于在接口上使用具体类型。
我的主要问题是如何决定如何向我的应用程序注册正确的服务。
这是一个例子:
var app = angular.module('app',[]);
// common registrations
app.service('commonService1', commonServiceFunction1);
app.service('commonService2', commonServiceFunction2);
app.service('commonService3', commonServiceFunction3);
app.service('commonService4', commonServiceFunction4);
// here I want to register the same service name with a different implementation
app.service('serviceName', serviceOneFunction); // sometimes I will need this service
app.service('serviceName', serviceTwoFunction); // sometimes I will need this service
我想到的事情:
-
添加一些逻辑并为每个源下载正确的 js 文件 - 函数名称将保持不变,我需要找到一种方法来提供包含正确函数的正确 js 文件。
覆盖注册(例如注册公共服务,然后使用特定实现覆盖注册)。
这两种解决方案都很丑陋,对我来说不可扩展。
我想要一个 IOC 容器或其他一些更好且可扩展的解决方案。
【问题讨论】:
-
使用什么样的标准来确定您需要哪种服务?应该为每个应用程序定义服务还是需要动态更改它们?
-
需要在配置中更改服务。由于我想在我的应用程序上注册正确的服务,所以我不会在我的应用程序使用过程中更改此注册。
标签: javascript angularjs typescript inversion-of-control