• Angular как получить всего один документ ajax?

    AMar4enko
    @AMar4enko
    А что будет, если перейти по #/metal/id={{doc.id}}?
    Если при клике на ссылку вам надо отобразить страницу с детальной информацией об объекте, то вам надо смотреть в сторону resolve секции в объявлении $routeProvider.when
    В текущей реализации вы отбираете у angular.js его хлеб.
    Это может выглядеть как-то так
    // Это контроллер, который будет привязан к содержимому ng-view после перехода по соотв. url
    // Внедряемая зависимость document возникает в момент разрешения зависимостей при активации роута
    app.controller('DocumentController', ['$scope','document', function($scope, doc){
         $scope.document = doc;
    }]);
    
    app.config(['$routeProvider',, function($routeProvider) {
        $routeProvider.when('/metal/:type/:id', {
            templateUrl: '/makeup/metal.html',
            controller: 'DocumentController',
            // Данная секция отвечает за разрешение зависимостей роута. Объекты из этой секции внедряются в указанный контроллер с соотв. именами       
            resolve: {
                document: ['doc','$route', function(doc,$route){
                     // Мы вытаскиваем из роута параметры id и type, запрашиваем у фабрики соотв. объект.           
                     // Фабрика в ответ возвращает нам promise, который мы возвращаем как зависимость, которая должна быть разрешена, и инициирует http-запрос. После получения объекта фабрика разрешает promise, инстанцируется контроллер с внедрением полученного объекта и отображается шаблон
                     return doc($route.current.params.id, $route.current.params.type);
                }]
            }
        });
    Ответ написан
    2 комментария
  • Angular как получить всего один документ ajax?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    angular.module('app').factory('doc', [
        '$http',
        function ($http) {
         
              return function (id) {
                    return $http.get(...).then(function (response) {
                          return response.data;
                    });
              }
        }
    ]);


    angular.module('app').controller('MyCtrl', [
        '$scope', 'doc',
        function ($scope, doc) {
             $scope.getDoc = function(id) {
                  doc(id).then(function (yourDocWillBeHere) {
                       
                  }
             }
        }
    ]);
    Ответ написан
    Комментировать