角度表单和路由

问题描述:

我有一个简单的表单,它基本上是一个搜索字段,用户输入参数并将其重定向到适当的页面。角度表单和路由

我想在形式参数来传递以类似的方式(玉):

 form(name='searchForm', ng-href='#/item/{{ctrl.search}}') 
     input(type='text', ng-model='ctrl.search') 

基本上,我只是希望路由当用户按下Enter键更改为#/item/argument在已经输入后搜索字段。

我该如何做到这一点?

非常感谢

在猜测我想你可以设置窗体上的action属性 - 这是何等的HTML表单传统的数据发送到一个URL。

但是,我通常会在表单元素上添加一个处理程序来代替ng-submit指令。在处理程序中,你将有这样的事情(记得要$location服务添加到您的控制器):

HTML

form(ng-submit="ctrl.onSubmit($event)") 

JS(控制器)

this.onSubmit = function (e) { 
    e.preventDefault(); 
    $location.url('item/' + this.search); 
} 
+1

也许你能抛开链接到的东西,详细解释了什么,你的意思是,“作为一个,你应该使用$范围的服务,数据注入到从控制器的观点 - 这就是它的存在是有“? – user2503764 2017-03-21 08:46:17

+0

谢谢 - 我已删除该评论。我相信这是'controller as'语法的早期阶段,它使用$ scope不推荐使用数据注入。我的速度肯定有点慢。 – 2017-03-22 04:12:52

Here's a Plunker

首先你需要一个动态路线,如

.when('/results/:item', 

您搜索与参数

$scope.doSearch = function() { 
    $location.path('results/' + $scope.search); 
} 

沿着基本上改变了位置,然后拿起那routeParams并作出$ http.get到您的端点。

$http.get('endpoint/' + $routeParams.item) 
+0

我正在使用ui-router,并且在使用$ state.go时出现以下错误:无法解析(当前状态)的'results/item'。我怎样才能解决这个问题? – Spearfisher 2014-11-04 07:51:37

+0

使用UI-Router - http://plnkr.co/edit/dq4v9bolkLoT91aNMOLo?p=preview – Dylan 2014-11-04 17:07:19