如何使用角度1中的动态用户名制作网址?

时间:2017-02-13 10:02:21

标签: angularjs .htaccess angular-ui-router

我是angularJs(版本1)的新手,我正在尝试使用ui-router为我的应用程序编写路由。

我的应用程序使用以下链接在浏览器上打开:

转换为http://localhost:8000/

http://localhost:8000/#/

还有其他一些链接,例如http://localhost:8000/#/contactushttp://localhost:8000/#/posts等。

问题是:

http://localhost:8000/#/

从远程获取用户的数据。目前,我已经硬编码了用户名以获取详细信息。

我希望通过在网址中传递用户名来使其动态化,如下所示:

http://localhost:8000/ {MYNAME} /

示例:

http://localhost:8000/jack

请建议,我应该如何写路由(使用ui-router状态)。我不想改变网址。

我应该创建.htaccess文件来重写网址还是以角度某种方式创建?

$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: {
                "my_nested_view@main" : {
                    template: 'contactus.html',
                    controllerAs: 'contactusCtrl',
                    controller: contactusController
                }
            }
        })
        .state('main.posts', {
            url: '/posts',
            views: {
                "my_nested_view@main" : {
                    template: postsTemplate,
                    controllerAs: 'postsCtrl',
                    controller: postsController
                }
            }
        });

我想允许用户在网址中传递他的用户名。

例如

localhost:8000 /它会打开正确的主页。

localhost:8000 / stackg91目前没有找到错误。我想允许用户在网址中传递用户名,而不是出错,它应该打开主页。

基本网址: http://localhost:8082/#/

希望通过http://localhost:8082/dinesh/#/

1 个答案:

答案 0 :(得分:-1)

您可以使用url参数传递用户名以获取用户详细信息

你的州定义是:: ​​

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

这将是控制器:

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


})

这意味着,url中的参数预计为

url: '/:userId',

将参数传递给控制器​​:

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

有关ui-routing的更多参考,您可以使用this link