@sashasoft
junior developer

Как настроить route and services and controller?

я новичок, и уже устал рыть просторы интернета! нужна помощь!!!
есть сервис
'use strict';

var myApp = angular.module('myApp');

myApp.factory('Mans', ['$resource',function($resource){
  return $resource('/mans.json', {},{
    query: { method: 'GET', isArray: true },
    create: { method: 'POST' }
  })
}]);

myApp.factory('Man', ['$resource', function($resource){
  return $resource('/mans/:id.json', {}, {
    show: { method: 'GET' },
    update: { method: 'PUT', params: {id: '@id'} },
    delete: { method: 'DELETE', params: {id: '@id'} }
  });
}]);


есть контроллер и роут (ниже)
'use strict';

var myApp = angular.module('myApp', ['ngRoute', 'ngResource']); 

//Controller
myApp.controller("ManListCtrl", ['$scope', '$http', '$resource', 'Mans', '$location', function($scope, $http, $resource, Mans, $location) {
  console.log("ManListCtrl");
  $scope.mans = Mans.query();
}]);

myApp.controller("ManNewCtrl", ['$scope', '$http', '$resource', 'Mans', '$location', '$routeParams', function($scope, $http, $resource, Mans, $routeParams,  $location) {
  consol.log("ManNewCtrl");
}]);

myApp.controller("ManDetailCtrl", ['$scope', '$resource', 'Man', '$location', '$routeParams', function($scope, $resource, Man, $location, $routeParams) {
  $scope.man = Man.show({id: $routeParams.id});
}]);

//Routes
myApp.config([
  '$routeProvider', '$locationProvider', function($routeProvider, $locationProvider) {
    $routeProvider.when('/mans', {
      templateUrl: 'partials/man-index.html',
      controller: 'ManListCtrl'
    });
    $routeProvider.when('/mans/:id', {
      templateUrl: 'partials/man-detail.html',
      controller: 'ManDetailCtrl'
    });
    $routeProvider.when('/mans/new', {
      templateUrl: 'partials/man-new.html',
      controller: 'ManNewCtrl'
    });
    $routeProvider.otherwise({
      redirectTo: '/mans'
    });
  }
]);

почему не работает контроллер ManNewCtrl и не подтягивается шаблон man-new.html
он даже в консоль ничего не выводит!
зато контроллер ManListCtrl выводит сообщение в консоль 2 раза!!
  • Вопрос задан
  • 227 просмотров
Решения вопроса 1
Fesor
@Fesor
Full-stack developer (Symfony, Angular)
потому что роут с айдишкой перекрывает его, подпадает под правило. Либо поместите роут выше, либо укажите что в качестве ID могут быть только инты.

и уже устал рыть просторы интернета


почитайте angular-styleguide

Это к сути вопроса не относится, просто замечания по коду.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы