2012-09-21 4 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を参照してください。ここでは、データをサービスに格納し、その周りにラッパーを配置してコントローラが再初期化されたとき( 2回目に戻ると)、ラッパーはキャッシュされたデータを戻すかAjax要求を出すかを決定します。 –

関連する問題