0

からreq.flash()オブジェクトを取得しまし{ error: ['Invalid username'] }た。動的ヘルパーを使用してJadeで作成されたテンプレートに渡します。しかし、私がするとき

for type in flashMessages
    p #{type}

テンプレートでは、変数タイプのタイプの代わりにメッセージ(「無効なユーザー名」)が表示されました。

タイプの入手方法を教えてください。次のようなフラッシュメッセージを印刷したいと思います。

for type in flashMessages
    each message in flashMessages[type]
        p.alert-#{type} #{message}

ありがとうございました

4

2 に答える 2

3

req.flash()すべてのメッセージのフラットリスト、または特定のタイプのすべてのメッセージのフラットリストを提供することを目的としています。いずれにせよ、メッセージオブジェクト自体はタイプを教えてくれません。なぜなら、あなたはすでにそれを知っていると想定されているからです。ただし、これに裏打ちreq.flash()されているreq.session.flash場合は、独自の機能をロールバックできます。

まず、必要な情報を含むメッセージの独自のリストを作成して、それをビューに渡すことができるようにする必要があります。例えば、

var messagesByType = req.session.flash || {},
    allMessages = [];
Object.keys(messagesByType).forEach(function(type) {
    var messages = messagesByType[type] || [];
    messages.forEach(function(msg) {
        allMessages.push({ type: type, text: msg });
    });
});
req.session.flash = {};

次に、allMessagesテンプレート内で利用できるようにしてください。例えば、

res.render('some-view', { messages: allMessages });

これにより、ビュー内で次のように繰り返すことができるものが得られるはずです。

for message in messages
    p(class='alert-#{message.type}') #{message.text}
于 2012-05-14T17:48:18.297 に答える
1

印刷しようとしている「type」値は何を指しますか?

flash()値には「type」属性はありません。

「タイプ」が「エラー」を意味し、「メッセージ」が「無効なユーザー名」を参照する場合:

エラーはオブジェクト属性です。それらをリストするには、使用する必要があります

var keys = Object.keys(myObject);
于 2012-05-14T17:47:29.783 に答える