我有一个单页Angular + bootstrap应用程序,用户可以在文本输入中输入用户名(无密码),用户信息将显示在屏幕上。
我希望这样做,以便当屏幕上显示用户的信息时,URL会相应地更改。
例如:输入此网址应直接进入浏览器:localhost:3000/user1
应立即打开user1的信息,而无需将其输入我的应用主屏幕上的文本框中。
此外,当您加载应用主屏幕并在文本输入和搜索中输入user2
时,在将用户信息加载到屏幕后,该网址应自动更改为localhost:3000/user2
。< / p>
您应该知道我的应用是单页应用,并且尚未引入角度路线。
我只是想知道我应该采取什么方法。感谢。
答案 0 :(得分:2)
您可以实施至少2种可能的解决方案:
解决方案1。
创建两个api get方法,一个是UserExist(),另一个是getUserDetails()。
输入用户名后,点击查找, 如果isUserExist()返回true,则使用$ location.path('/:userId')重定向到用户详细信息页面,其中“:userId”= new_user_name
如果没有,请显示消息“用户不存在”。
解决方案2.(我会选择)
将您的主网址设为localhost:3000 / user?name = user1
基本上使用param'name'。
点击查找并加载新用户详细信息后, 您可以动态更新'name'参数,例如$ location.search('name','user2')
在$ 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?
您将在屏幕上加载新的用户详细信息并使用更新的网址
localhost:3000/user?name=user2