8

Flash メッセージのバックボーンへの拡張機能はありますか? Web フレームワーク (少なくともサーバー側) では一般的な機能のようです。何もないようで、自分で作成しようとしました:

class FlashMessenger extends Backbone.Model 

    constructor: ->
        @messages = []

    # add a message to the messages array
    add: (type, message) ->
        @messages.push 
            type: type
            message: message

    # returns all existing messages and clearing all messages
    getMessages: ->
        ret = @messages.slice(0)
        @messages = []
        return ret

今、どうすればそれらをビューに自動的に挿入できるのだろうと思っていました。Backbone.Router.navigate()例を使用すると、メッセージが表示されるようにします。

app.flashMessages.add("success", "Successfully logged in")
appRouter.navigate("dashboard")
# flash messages should show when I render the view
4

1 に答える 1

13

私の 5 セント -- フラッシュ メッセージに Backbone を使用するのは少しやり過ぎのようです。ページにフラッシュ メッセージのインスタンスが 1 つしかない場合は、別のモデルを使用しない方がよいでしょう。

代わりに、Flash メッセージのビューとグローバル ディスパッチャーを使用します。

Dispatcher = _.extend({}, Backbone.Events);

ビューを作成:

var FlashMessage = Backbone.View.extend({
    initialize: function() {
       Dispatcher.bind('show_flash_message', this.render);
    },

    render: function(msg) {
       // do something with the message
    }
});

そして、フラッシュメッセージを表示する必要があるアプリの部分から、

Dispatcher.trigger('show_flash_message', 'Some message');
于 2012-06-25T18:28:33.420 に答える