在表单提交时使用 URL 发送路由参数
Sending routeparams with the URL on form submit
当用户单击提交按钮时,我需要发送带有URL的路由参数。
这是我的简单表格
<form action="#/chat/{{username}}">
<input type="text" placeholder="enter a username..." ng-model="username" required autofocus><br/>
<input type="submit" value="submit">
</form>
但这不起作用,因为"用户名"变量没有绑定,而是转到/chat/%7B%7Busername%7D%7D
(有人启发我为什么会发生这种情况)
目前,我遵循的解决方法是使用超链接而不是提交按钮
<div>
<input type="text" class="form-control" placeholder="enter a username..." ng-model="username" required autofocus><br/>
<a href="#/chat/{{username}}" class="btn btn-lg btn-primary btn-block" >Start Chatting</a>
</div>
但是上述方法的问题在于,当用户按ENTER键时它不起作用(因为它不是提交按钮)
那么实现这一目标的正确方法是什么?
标记:
<form ng-submit="onSubmit()">
<input type="text" placeholder="enter a username..." ng-model="username" required autofocus><br/>
<button type="submit">submit</submit>
</form>
JavaScript 控制器:
app.controller('ctrl', function($location) {
$scope.username = '';
$scope.onSubmit = function() {
$location.url('/chat/' + $scope.username);
};
});
或类似的东西:)
HTML:
<form ng-submit="onSubmit()">
<input type="text" placeholder="enter a username..." ng-model="username" required autofocus><br/>
<button type="submit">submit</submit>
</form>
控制器:
app.controller('ctrl', function($state) {
$scope.username = 'example name';
$scope.onSubmit = function() {
$state.go('/chat/' + $scope.username);
};
});
文档:
角度用户界面
$state.go('$scope.username') - will go to the state according to user name
$state.go('^') - will go to a parent state
$state.go('^.sibling') - will go to a sibling state
$state.go('.child.grandchild') - will go to grandchild state
根据堆栈上的另一个帖子:
$location服务在开箱即用的 Angular.js 框架上,允许您管理位置对象(类似于纯 JavaScript)。$state服务是 ui-router 模块的一部分,允许您在高级模式下管理路由,贯穿状态机视图管理。
如果使用 ui-router,则最好使用$state服务来管理状态/路由,因为状态抽象了路由的概念,您可以在不更改状态的情况下更改物理路由。
堆栈帖子
相关文章:
- 有没有办法用routerLink/router.navigation附加查询/路由参数
- 如何在JavaScript中获取路由参数
- 带斜杠-中断路由的节点JS路由参数
- (多个)路由参数的集合
- express/如何将路由参数传递到其他文件
- 无法获取用户 ID 路由参数以在反应路由器中继上工作
- Url.Action 将以前的 URL 与 VS IDE 中 JavaScript 中的当前路由参数相结合
- 仅更改一个路由参数
- 在表单提交时使用 URL 发送路由参数
- 路由参数为空
- 无法读取路由参数中未定义的属性“名称”
- 如何从组件外部访问路由参数
- 自定义骨干路由参数
- 角度 JS 路由参数 斜杠的随机数
- 使用角度 ui 路由器获取服务中的路由参数
- AngularJS ui-router 中的 URL 路由参数
- 如何检查 URL 是否仅包含一个路由参数
- 角度JS路由参数在路由时约束
- 带有 AngularJS 和路由参数的后退按钮循环
- 当路由参数更改时,工厂中的角度火更改引用