2017-02-13 6 views
0

Я новичок в angularJs (версия 1), я пытаюсь написать маршрут для своего приложения, используя ui-router.Как сделать URL с динамическим именем пользователя в угловом 1?

Мое приложение открывает в браузере, используя ссылку ниже:

http://localhost:8000/, который преобразуется в http://localhost:8000/#/

Есть некоторые другие ссылки, как http://localhost:8000/#/contactus и http://localhost:8000/#/posts т.д.

Проблема:

http://localhost:8000/#/

извлекает данные пользователя с удаленного устройства. В настоящее время я жестко запрограммировал имя пользователя, чтобы получить детали.

Я хочу, чтобы сделать его динамичным, передавая имя пользователя в URL, как выглядит следующим образом:

http://localhost:8000/ {Myname}/

Пример:

http://localhost:8000/jack

Пожалуйста, укажите, как я должен писать маршрут (используя состояние ui-router). Я не хочу менять URL-адреса.

Должен ли я создать файл .htaccess, чтобы переписать URL-адрес, или это возможно в угловой форме?

$stateProvider 
     .state('main', { 
      views: { 
       "myWidget": { 
        template: "<div ui-view='my_nested_view' id='my_nested_view'> <div/>", 
        controller: myWidgetCtrl 
       } 
      } 
     }) 
     .state('main.contactus', { 
      url: '/contactus', 
      views: { 
       "[email protected]" : { 
        template: 'contactus.html', 
        controllerAs: 'contactusCtrl', 
        controller: contactusController 
       } 
      } 
     }) 
     .state('main.posts', { 
      url: '/posts', 
      views: { 
       "[email protected]" : { 
        template: postsTemplate, 
        controllerAs: 'postsCtrl', 
        controller: postsController 
       } 
      } 
     }); 

Я хочу разрешить пользователю передавать свое имя пользователя в URL-адресе.

Например

локальный: 8000/она открывает домашнюю страницу, которая является правильной.

localhost: 8000/stackg91 в настоящее время не нашли ошибку. Я хочу разрешить пользователю передавать имя пользователя в URL-адресе, вместо того, чтобы давать ошибку, он должен открыть домашнюю страницу.

баз URL:http://localhost:8082/#/

хочет передать http://localhost:8082/dinesh/#/

ответ

-1

Вы можете использовать параметр URL-адрес для передачи имени пользователя для извлечения данных пользователя

Вашего определения состояния будет ::

$stateProvider 
    .state('UserDetails', { 
     url: "/:userId", // 
     templateUrl: 'UserDetails.html', 
     controller: 'UserDetailsCtrl' 
     } 
    }) 

И это будет контроллер:

.controller('UserDetailsCtrl', function($scope, $state, $stateParams) { 
    //.. 
    var userId = $stateParams.foo; //getting userId 


}) 

Это означает, что PARAMS в URL, как ожидается, как

url: '/:userId', 

Для передачи аргументов в контроллер:

<a ui-sref="UserDetails({userId:'jack'})"></a> 

Для получения дополнительной ссылки на Ui-маршрутизации, вы можете использовать this link

+0

Он делает такой URL: http: // localhost: 8082/#/jack, и я хочу: http: // localhost : 8082/jack/#/ –

+0

Вы можете удалить # из URL-адреса и установить режим html5 в true и иметь URL-адрес, например http: // localhost: 8082/jack/something –