2012-09-21 107 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请求。 –