Роутинг Angular

Тема в разделе "JavaScript", создана пользователем Anque, 21 апр 2017.

Модераторы: ZiX
  1. Anque

    Anque Постоялец Нарушитель

    Регистр.:
    13 дек 2016
    Сообщения:
    55
    Симпатии:
    2
    столкнулся с проектом на angular, пытаюсь разобраться.
    вряд ли кто-то подскажет конкретный ответ, но, возможно, знакома архитектура - не думаю, что здесь что-то уникальное.
    в данный момент есть проекты (портфолио), которые имеют урлы localhost/#/projects/14
    , где 14 - id проекта, само собой.
    вопрос, как бы сделать так, чтобы в урле было не 14, а наименование проекта? где-то должно быть соответствие, но не могу найти его.

    например, я нашёл место, где выводятся элементы портфолио на гл. странице:
    Код:
                        <!-- PORTFOLIO ITEM -->
                        <div name ng-model="master.main.projects" class="work-item {{project.size}} {{project.group}}"
                             data-ng-repeat="project in master.main.projects | reverse" on-finish-render="ngRepeatFinished">
                            <!--| limitTo:limit-->
                            <a href="#/projects/{{master.main.projects.length - $index-1}}">
                                <img ng-src="{{project.src | replaceSrc}}" alt="">
                                <div class="work-caption font-alt">
                                    <h3 class="work-title">{{project.name}}</h3>
                                    <!--<div class="work-descr">-->
                                        <!--{{project.group}}-->
                                    <!--</div>-->
                                </div>
                            </a>
                        </div>
    где генерится урл видно - #/projects/{{master.main.projects.length - $index-1, если заменить это на #/projects/{{project.name, то ссылка изменится, но там будет пусто.
     
  2. Amazko

    Amazko Пока рекордов нет :(

    Moderator
    Регистр.:
    4 мар 2012
    Сообщения:
    717
    Симпатии:
    422
    пробуй прописать ng-href в ссылке тоесть так: <a ng-href="{{'#/projects/'+project.name}}">
     
  3. Anque

    Anque Постоялец Нарушитель

    Регистр.:
    13 дек 2016
    Сообщения:
    55
    Симпатии:
    2
    Код:
                     <div name ng-model="master.main.projects" class="work-item {{project.size}} {{project.group}}"
                             data-ng-repeat="project in master.main.projects | reverse" on-finish-render="ngRepeatFinished">
                            <!--| limitTo:limit-->
                            <a ng-href="{{'#/projects/'+project.name}}">
                                <img ng-src="{{project.src | replaceSrc}}" alt="">
                                <div class="work-caption font-alt">
                                    <h3 class="work-title">{{project.name}}</h3>
                                    <!--<div class="work-descr">-->
                                        <!--{{project.group}}-->
                                    <!--</div>-->
                                </div>
                            </a>
                        </div>
    сделал:
    эффект такой же, как если бы я переписал href, как я делал ранее - кидает на ссылки вида Перейти по ссылке
    и не подгружает контент, ибо не может определить нужный
     
  4. nejtr0n

    nejtr0n Постоялец

    Регистр.:
    24 янв 2014
    Сообщения:
    124
    Симпатии:
    66
    А бекенд на чём? по идее, нужно изменить запрос вида
    select * from projects where id=$id
    на
    select * from projects where name=$name
    Так же необходимо, чтобы поле name было уникально в пределах таблицы.
     
  5. Anque

    Anque Постоялец Нарушитель

    Регистр.:
    13 дек 2016
    Сообщения:
    55
    Симпатии:
    2
    php, nginx

    upd: не могу даже найти откуда инфа собирается, на хостинге даже ньет БД-аккаунта. видимо, json.
    upd2: видимо, отсюда берется инфа (т.е. БД и ньет:(
    Код:
    <?php
    
    header('Content-Type: application/json;charset=utf-8');
    header("Access-Control-Allow-Origin: *");
    switch ($_REQUEST['action']) {
        case 'main':
            $data = file_get_contents('data/main.json');
            echo json_encode($data);
            break;
        case 'about':
            $data = file_get_contents('data/about.json');
            echo json_encode($data);
            break;
        case 'services':
            $data = file_get_contents('data/services.json');
            echo json_encode($data);
            break;
        case 'photo':
            $data = file_get_contents('data/photo.json');
            echo json_encode($data);
            break;
        case 'entertainment':
            $data = file_get_contents('data/entertainment.json');
            echo json_encode($data);
            break;
        case 'contacts':
            $data = file_get_contents('data/contacts.json');
            echo json_encode($data);
            break;
        case 'common':
            $data = file_get_contents('data/common.json');
            echo json_encode($data);
            break;
        case 'emails':
            $data = file_get_contents('data/mail_log.json');
            echo json_encode($data);
            break;
        case 'settings':
            $data = file_get_contents('data/settings.json');
            echo json_encode($data);
            break;
    }
    
    ?>
    
     
    Последнее редактирование: 21 апр 2017