Как уменьшить избыточность кода при определении маршрутов в AngularJS

В настоящее время я кодирую Rest API и клиент в AngularJS. Я использую модули Angular

  • угловой ресурс (ngResource)
  • угловой маршрут (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});
        }]
    }
})

И это только одна сущность. Кроме того, мне нужно было определить для каждого «действия» один контроллер. Я собрал их все вместе для этой единой сущности:

'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 очень круто, потому что все работает автоматически... ну, просто избыточность очень высока.

Есть ли у вас здесь передовой опыт? Заранее спасибо.


person Armin    schedule 18.05.2015    source источник


Ответы (1)


Вы всегда можете убрать логику Facility.get({id: $route.current.params.id}); в каком-нибудь сервисе/фабрике, но ИМХО это будет просто чрезмерная инженерия. Помимо этого, я не вижу большой избыточности, поскольку большая часть этого кода — просто объявление вещей.

person mcs_dodo    schedule 18.05.2015