2012-09-21 103 views
25

我有以下要求: 應該爲所有包含編輯和刪除鏈接的項目顯示一個列表。當用戶點擊編輯時,編輯表單應該顯示文本框和保存按鈕。現在當用戶編輯數據並點擊保存按鈕時,數據應該被保存並且列表頁面應該與修改後的數據一起再次出現。 一切工作正常,但我如何通過在angularjs路由再次重定向到列表頁面? 下面是一些代碼:通過angularjs中的路由重定向

路由選擇控制器:

angular.module('productapp', []). 
    config(['$routeProvider', function($routeProvider) { 
    $routeProvider. 
     when('/productapp', {templateUrl: 'partials/productList.html', controller: productsCtrl}). 
     when('/productapp/:productId', {templateUrl: 'partials/edit.html', controller: editCtrl}). 
     otherwise({redirectTo: '/productapp'}); 
}]); 

編輯表單:

<div> 
    <form method="POST"> 
    <label>Add New Product:</label> 
     <input type="text" name="keywords" ng-model="product.name" placeholder="enter name..." value="{{product.name}}"> 
     <input type="text" name="desc" ng-model="product.description" placeholder="enter description..." value="{{product.description}}"> 
     <button type="submit" ng-click="save(product.product_id,$event)" >Save</button> 
    </form> 
</div> 

我如何重定向到同一列表網頁?

回答

59

您需要在editCtrl控制器中注入$location服務。

然後,在您的保存功能中添加以下內容以進行重定向(請注意路徑與您的路線相匹配)。

$scope.save = function (...) { 
    // ... 
    $location.path('/productapp'); 
} 

This Youtube video也可能幫助你。

+0

我試過這個,但然後頁面重新加載。我不想讓頁面重新加載。還有什麼選擇? – z22

+0

請參閱https://groups.google.com/d/topic/angular/eegk_lB6kVs/discussion,其中的建議是將數據存儲在服務中,並對其進行封裝,以便在控制器重新初始化時(當您第二次返回頁面時),包裝器將決定是返回緩存的數據還是發出Ajax請求。 –