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 消息实例,最好不要为其使用单独的模型。

相反,我会使用 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
    }
});

从应用程序中您必须显示 Flash 消息的部分,执行

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