web-dev-qa-db-ja.com

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>

同じリストページにリダイレクトするにはどうすればよいですか?

25
z22

editCtrlコントローラーに $ location サービスを挿入する必要があります。

次に、保存関数で次を追加してリダイレクトを実行します(パスがルートと一致することに注意してください)。

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

このYoutubeビデオ も役立つかもしれません。

60
Martin