2014-11-03 118 views
0

我有一個簡單的表單,它基本上是一個搜索字段,用戶輸入參數並將其重定向到適當的頁面。角度表單和路由

我想在形式參數來傳遞以類似的方式(玉):

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

基本上,我只是希望路由當用戶按下Enter鍵更改爲#/item/argument在已經輸入後搜索字段。

我該如何做到這一點?

非常感謝

回答

0

在猜測我想你可以設置窗體上的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

0

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