Javascript 一个应用程序中多个模型对象的角度积垢

Javascript 一个应用程序中多个模型对象的角度积垢,javascript,angularjs,model-view-controller,angular-services,Javascript,Angularjs,Model View Controller,Angular Services,我有一个Angular应用程序,它有三个不同的业务对象,需要在所有这些对象上独立实现CRUD操作。我们叫他们a,b,c。我有同等的aCtrl、bCtrl、cCtrl和aSvc、bSvc、cSvc来管理这些积垢操作。 因此在本例中,aCtrl管理“a”的CRUD。aSvc通过ajax调用帮助将数据持久化到后端。 我还有一个allCtrl和allSvc,当应用程序第一次加载时,它将所有对象a、b、c从后端拉到一个json对象中(不是单独拉,而是将后端设计为推送一个嵌入了a、b、c的统一json对象)

我有一个Angular应用程序,它有三个不同的业务对象,需要在所有这些对象上独立实现CRUD操作。我们叫他们a,b,c。我有同等的aCtrl、bCtrl、cCtrl和aSvc、bSvc、cSvc来管理这些积垢操作。 因此在本例中,aCtrl管理“a”的CRUD。aSvc通过ajax调用帮助将数据持久化到后端。 我还有一个allCtrl和allSvc,当应用程序第一次加载时,它将所有对象a、b、c从后端拉到一个json对象中(不是单独拉,而是将后端设计为推送一个嵌入了a、b、c的统一json对象)

“全部”对象

{
 a:{},
 b:{},
 c:{}
}
因此,我一直在以一种简单而有意义的方式构造应用程序。当应用程序第一次加载时,我会让allSvc从后端拉入“all”对象。这包含了执行CRUD所需的所有数据(当然,我必须使其与后端保持同步)。当应用程序第一次加载时,我想列出类型为“a”的对象,然后为用户提供编辑/删除/添加的选项。同样,我有下拉导航,可以将用户带到其他页面,这些页面对对象“b”、“c”的操作完全相同

以下是我迄今为止所做的事情以及我如何惨败的一些片段:)

index.html

<html lang="en" ng-app="myApp">
 ...
 ...
 <div class="" ng-view></div>
路线

myApp.config(['$routeProvider', function($routeProvider) {
$routeProvider.when('/a/list', {templateUrl: 'partials/a/list.html',controller: 'aCtrl'});
$routeProvider.when('/a/add', {templateUrl: 'partials/a/add.html', controller: 'aCtrl'});
$routeProvider.when('/a/edit/:id', {templateUrl: 'partials/a/edit.html', controller: 'aCtrl'});
$routeProvider.when('/a/delete/:id', {templateUrl: 'partials/a/list.html', controller: 'aCtrl'});
.... similary I have routes for b & c to perform crud
$routeProvider.otherwise({redirectTo: '/a/list'});

}]);
aCtrl

我无法在此设计中有意义地设置routeParams以正确执行编辑/删除。我还必须考虑userId(需要为其执行CRUD操作的登录用户)。如何更好地管理路线?我是否应该使用像/a/edit/userId/aId这样的东西来编辑“a”和/a/delete/userId/aId来删除“a”作为示例


请帮我擦亮这坨屎

我在控制器中分离了服务/更新/请求调用,项目可以在下面的路径中找到。如果有人认为可以进一步改进,请告诉我。但是,为了测试服务,我使用了strongloop,可以在存储库中找到描述

示例如下所示:

“严格使用”;
函数MainController($scope、$state、$rootScope、$window、$stateparms、HttpService){
$scope.init=函数(){
HttpService.load(“http://0.0.0.0:3000/api/custdetails")
.然后(功能(响应){
如果(答复){
log(JSON.stringify(response.data));
$scope.showAllData=response.data;
}
},函数(错误){
console.log(“发生错误”);
});
};
$scope.addMoreData=函数(){
风险值数据={
客户名称:$scope.custNameModel,
电话号码:$scope.phoneNumberModel,
id:$scope.idModel
};
HttpService.update('http://0.0.0.0:3000/api/custdetails?",数据),;
$scope.init();
};
$scope.updateData=函数(){
风险值数据={
客户名称:$scope.custNameModel,
电话号码:$scope.phoneNumberModel,
id:$scope.idModel
};
HttpService.patch('http://0.0.0.0:3000/api/custdetails?",数据),;
$scope.init();
};
$scope.deleteData=函数(){
log(“定义的ID为:+$scope.idModel”);
HttpService.delete(“http://0.0.0.0:3000/api/custdetails“,$scope.idModel);
$scope.init();
};

}
您可能希望使用以避免此类问题。请您解释一下“我无法在此设计中有意义地设置routeParams以正确执行编辑/删除”的含义。我觉得没那么糟。您可能需要考虑做一些类似于路由器提供商的事情。看起来,您的a/b/c控制器基本上是一样的,只是在不同的数据上操作,所以只使用一个控制器是有意义的。URL中的用户ID听起来像安全问题,考虑使用请求中包含的一些会话ID。
myApp.config(['$routeProvider', function($routeProvider) {
$routeProvider.when('/a/list', {templateUrl: 'partials/a/list.html',controller: 'aCtrl'});
$routeProvider.when('/a/add', {templateUrl: 'partials/a/add.html', controller: 'aCtrl'});
$routeProvider.when('/a/edit/:id', {templateUrl: 'partials/a/edit.html', controller: 'aCtrl'});
$routeProvider.when('/a/delete/:id', {templateUrl: 'partials/a/list.html', controller: 'aCtrl'});
.... similary I have routes for b & c to perform crud
$routeProvider.otherwise({redirectTo: '/a/list'});

}]);
myApp.controller('aCtrl', function($scope, aSvc,allSvc) {
$scope.allCollection= allService.getAll();
$scope.aCollection = allCollection.a;