对于上下文,我们使用c#作为服务器,使用angularcript作为客户端,使用grunt构建客户端(而不是visual studio默认编译器)
我们希望在Visual Studio解决方案中分解两个项目之间的一些角度服务,使用grunt将所有文件放在一起。 目前的结构如下:
项目A
- 应用
- 外部(我们在这里复制项目Common中的所有定义文件和js文件)
- 订单
- orders.index.ts
- 服务
- ordersService.ts
- orders.services.index.ts
项目B
- 应用
- 外部(我们在这里复制项目Common中的所有定义文件和js文件)
- ...(没有特定的OrderService)
项目共同
- 应用
- 订单
- orders.index.ts
- 服务
- ordersService.ts
- orders.services.index.ts
我们在项目Common中的ordersService.ts中定义服务OrderService,因为项目A和项目B使用此服务的方法。 但是在项目A中,我们需要仅由项目A使用的其他操作,因此我们希望在项目A中扩展服务。
目前,唯一的结果是项目A文件被项目Common中的项目覆盖。那么是否有可能扩展角度服务,如果是,可以如何?
编辑:
更清楚,一个例子:
module Orders {
export interface IOrdersResourceClass extends ng.resource.IResourceClass<Common.IEmptyResource> {
listAllOrders(success: (orders: Order[]) => void, error?: Function): void;
getOrder(success: (order: order[]) => void, error?: Function): void;
}
angular
.module("prefix.orders.resources")
.factory("ordersRsc",
['$resource', ($resource: ng.resource.IResourceService): IOrdersResourceClass => {
var listAllOrders: ng.resource.IActionDescriptor = {
method: 'GET',
url: Common.RestServicesAddresses.Order + '/years',
isArray: true,
};
项目Common
中的OrderService.ts
module Orders {
export interface IOrdersResourceClass {
changeOrder(success: () => void, error?: Function): void;
}
angular
.module("prefix.orders.resources")
.factory("ordersRsc",
['$resource', ($resource: ng.resource.IResourceService): IOrdersResourceClass => {
var changeOrder: ng.resource.IActionDescriptor = {
method: 'GET',
url: Common.RestServicesAddresses.Order,
isArray: true,
};
来自项目A的OrderService
这个想法是在任何地方使用'ordersRsc',但只在项目A中扩展它。