在 AngularJS 中定义路由时如何减少代码冗余
How to reduce code redundancy when defining routes in AngularJS
我目前正在用 AngularJS 编写一个 Rest API 和一个客户端。我正在使用 Angular 模块
- angular-资源 (ngResource)
- angular-路线(ngRoute)
我的路由配置是这样的:
$routeProvider
.when('/facility', {
templateUrl: pathTemplate + 'Facility/index.html',
controller: 'FacilityIndexController',
resolve: {
Facilities: ['Facility', function(Facility) {
return Facility.query();
}]
}
})
.when('/facility/show/:id', {
templateUrl: pathTemplate + 'Facility/show.html',
controller: 'FacilityShowController',
resolve: {
Facility: ['Facility', '$route', function(Facility, $route) {
return Facility.get({id: $route.current.params.id});
}]
}
})
.when('/facility/edit/:id', {
templateUrl: pathTemplate + 'Facility/edit.html',
controller: 'FacilityEditController',
resolve: {
Facility: ['Facility', '$route', function(Facility, $route) {
return Facility.get({id: $route.current.params.id});
}]
}
})
这只是一个实体。此外,我需要为每个 "action" 定义一个控制器。我为这个单一实体将它们放在一起:
'use strict';
angular.module('app')
.controller('FacilityIndexController', ['$scope', 'Facilities', function($scope, Facilities) {
$scope.facilities = Facilities;
}])
.controller('FacilityShowController', ['$scope', 'Facility', function($scope, Facility) {
$scope.facility = Facility;
}])
.controller('FacilityCreateController', ['$scope', 'Facility', function($scope, Facility) {
$scope.facility = new Facility();
// $scope.facility.$save();
}])
.controller('FacilityEditController', ['$scope', 'Facility', function($scope, Facility) {
$scope.facility = Facility;
$scope.update = function() {
var id = $scope.facility.id;
$scope.facility.$update({id: id}).then(function(response){
$scope.goTo('facility/show/' + id);
});
};
}]);
我认为与 $resource
一起工作非常酷,因为一切都是自动进行的...好吧,只是冗余度很高。
你有什么最佳实践吗?
提前致谢。
您总是可以在某些 service/factory 中删除 Facility.get({id: $route.current.params.id});
的逻辑,但恕我直言,那只是过度设计。除此之外,我没有看到太多冗余,因为大部分代码只是事物的声明。
我目前正在用 AngularJS 编写一个 Rest API 和一个客户端。我正在使用 Angular 模块
- angular-资源 (ngResource)
- angular-路线(ngRoute)
我的路由配置是这样的:
$routeProvider
.when('/facility', {
templateUrl: pathTemplate + 'Facility/index.html',
controller: 'FacilityIndexController',
resolve: {
Facilities: ['Facility', function(Facility) {
return Facility.query();
}]
}
})
.when('/facility/show/:id', {
templateUrl: pathTemplate + 'Facility/show.html',
controller: 'FacilityShowController',
resolve: {
Facility: ['Facility', '$route', function(Facility, $route) {
return Facility.get({id: $route.current.params.id});
}]
}
})
.when('/facility/edit/:id', {
templateUrl: pathTemplate + 'Facility/edit.html',
controller: 'FacilityEditController',
resolve: {
Facility: ['Facility', '$route', function(Facility, $route) {
return Facility.get({id: $route.current.params.id});
}]
}
})
这只是一个实体。此外,我需要为每个 "action" 定义一个控制器。我为这个单一实体将它们放在一起:
'use strict';
angular.module('app')
.controller('FacilityIndexController', ['$scope', 'Facilities', function($scope, Facilities) {
$scope.facilities = Facilities;
}])
.controller('FacilityShowController', ['$scope', 'Facility', function($scope, Facility) {
$scope.facility = Facility;
}])
.controller('FacilityCreateController', ['$scope', 'Facility', function($scope, Facility) {
$scope.facility = new Facility();
// $scope.facility.$save();
}])
.controller('FacilityEditController', ['$scope', 'Facility', function($scope, Facility) {
$scope.facility = Facility;
$scope.update = function() {
var id = $scope.facility.id;
$scope.facility.$update({id: id}).then(function(response){
$scope.goTo('facility/show/' + id);
});
};
}]);
我认为与 $resource
一起工作非常酷,因为一切都是自动进行的...好吧,只是冗余度很高。
你有什么最佳实践吗? 提前致谢。
您总是可以在某些 service/factory 中删除 Facility.get({id: $route.current.params.id});
的逻辑,但恕我直言,那只是过度设计。除此之外,我没有看到太多冗余,因为大部分代码只是事物的声明。