14

以下のシナリオでメッセージを渡すための最良の方法は何ですか。

の成功シナリオで$scope.p.$saveは、結果にメッセージ(res.message)が含まれ、次のビュー($location.path("/test/"+res.reply.Id))に表示したいと思います。AngularJSがないと、URLで渡すか、セッションCookieに保存することができます。ただし、ブラウザーリダイレクトがなく、状態が利用可能である必要があるため、AngularJSにはより良い方法があると思います。これを達成するための最良の方法は何ですか?

rootScopeで設定すると、ブラウザの戻るボタンを使用しているときに表示されます。メッセージのスコープは、新しいビューへの最初のナビゲーションに対してのみ表示されます。

function NewCtrl(Phone, $location, $rootScope, $scope) {
    $scope.p = new Phone();
    $scope.save = function () {
        $scope.p.$save(
            {},
            function (res) {
                $rootScope.message = res.message **//<-- this will cause message still set when using browser back button, etc**
                $location.path("/test/"+res.reply.Id); **//<-- Req: needs to pass the message to next view**
            }, function (res) {
            //TODO
            }
        );
    };
}
....
PhoneApp.factory('Phone', function ($resource) {
    return $resource('/api/test/:_id')
});
4

3 に答える 3

16

$routeChangeSuccessにフラッシュを表示するサービスを使用できます。

フラッシュメッセージを設定するたびに、それをキューに追加します。ルートが変更されたら、最初のアイテムをキューから取り出して、現在のメッセージに設定します。

これがデモです:

http://plnkr.co/edit/3n8m1X?p=preview

于 2012-09-30T19:48:23.367 に答える
5

私は同様の機能を実装しようとしていましたが、実際にはもっとうなり声のようなメッセージが欲しかったのです。

Andyが上記で提供した優れたplinkrコードを更新して、toastrgrowlスタイルの通知ライブラリを活用する「pop」メソッドを追加しました。

私のアップデートでは、通知の種類(情報、警告、成功、エラー)とタイトルを指定することもできます。

'pop'メソッドは、メッセージのキューへの追加をスキップし、代わりにメッセージをすぐに画面にポップアップします。Andyの以前のplinkrのset/get機能は、ほとんど変更されていません。

あなたはここで私のアップデートを見つけることができます:http://plnkr.co/edit/MY2SXG ?p = Preview

于 2013-01-12T09:37:17.380 に答える
0

このデフォルトをAngularJSに設定する方法はないと思います。最善の策は、クエリ文字列を介してメッセージ(エンコード)を渡すことです。

于 2012-09-29T19:56:08.453 に答える