【问题标题】:Showing a username in the URL在 URL 中显示用户名
【发布时间】:2015-06-11 08:29:33
【问题描述】:

我有一个单页 Angular + 引导应用程序,用户可以在其中输入他们的用户名(无密码)到文本输入中,他们的用户信息将显示在屏幕上。

我希望这样当用户的信息显示在屏幕上时,URL 会相应地改变。

例如:应直接在浏览器中输入此 URL:localhost:3000/user1 应立即打开 user1 的信息,而无需将其输入到我的应用程序主屏幕上的文本框中。

此外,当您加载应用程序主屏幕,并在文本输入和搜索中输入user2 时,用户信息加载到屏幕后,URL 应自动更改为localhost:3000/user2

您应该知道我的应用程序是单页应用程序,并且还没有引入角度路由。

我只是想知道我应该采取什么方法。谢谢。

【问题讨论】:

  • 这就是问题所在。我应该尝试什么?

标签: angularjs twitter-bootstrap routes


【解决方案1】:

您可以实施至少 2 种可能的解决方案:

解决方案 1。

创建两个api get方法,一个是isUserExist(),另一个是getUserDetails()。

输入用户名后,点击查找, 如果 isUserExist() 返回 true,则使用 $location.path('/:userId') where ":userId"=new_user_name

重定向到用户详细信息页面

如果不存在,则显示消息“用户不存在”。

解决方案 2。(我会选择那个)

将您的主网址设为 localhost:3000/user?name=user1

基本上使用参数'name'。

点击查找并加载新的用户详细信息后, 你可以像 $location.search('name', 'user2') 那样动态更新 'name' 参数

在你的 $routeProvider.when() 语句中设置 'reloadOnSearch: false'

    $routeProvider.when('/user', {
        templateUrl: 'some_user_template.html',
        controller: SomeUserCtrl,
        reloadOnSearch: false
    })

How can I set a query parameter in AngularJS without doing a route?

您将在屏幕上加载新的用户详细信息,更新后的 url 为

    localhost:3000/user?name=user2

【讨论】:

  • 非常感谢!非常感谢回答这个问题,而不是投票否决它。
猜你喜欢
  • 1970-01-01
  • 2016-03-26
  • 2021-11-18
  • 2016-09-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-08-29
相关资源
最近更新 更多