AngularJS маршрутизация не показывает дефисы для пробелов между словами - PullRequest
0 голосов
/ 10 мая 2018

Я настроил свои маршруты, как и ожидалось (конечно, внутри моего файла app.js). Я сделал это с помощью ui-router вместо нашего родного ngRoute. Все они выглядят следующим образом:

    .state('segment', {
        url: "/:segmentId",
        data: { segmentId: "1" },
        ncyBreadcrumb: { skip: true },
        templateUrl: "resources/views/segment.html",
        controller: 'SegmentCtrl'
    })

Как видите, у него есть собственный контроллер и представление (templateUrl). И назначенный URL, а также. Этот сегментId представляет собой переменную, которая потребляет данные из файла JSON. Внутри этого файла требуется имя определенного ключа, чтобы использовать его значение. Это значение будет моим URL-адресом.

{
  "id": "2",
  "name": "This is my url",
},

Но вот подвох:

Если между словами есть пробелы, это должно выглядеть так: www.example.com/this-is-my-url/

Но это выглядит так:

www.example.com / thisaisamyaurl /

Не имею ни малейшего представления о том, что здесь происходит.

1 Ответ

0 голосов
/ 10 мая 2018

У меня была проблема с моей функцией slugify.Это не было хорошо заявлено.

            // remove accents, swap ñ for n, etc
            var from = "ãà áäâẽèéëêìíïîõòóöôùúüûñç·/_,:;";
            var to   = "aaaaaeeeeeiiiiooooouuuunc------";
            for (var i=0, l=from.length ; i<l ; i++) {
                str = str.replace(new RegExp(from.charAt(i), 'g'), to.charAt(i));
            }

Теперь это:

            // remove accents, swap ñ for n, etc
            var from = "ãàáäâẽèéëêìíïîõòóöôùúüûñç·/_,:;";
            var to   = "aaaaaeeeeeiiiiooooouuuunc------";
            for (var i=0, l=from.length ; i<l ; i++) {
                str = str.replace(new RegExp(from.charAt(i), 'g'), to.charAt(i));
            }

И это работает.

...