BackboneJS Flash消息

Jie*_*eng 8 backbone.js

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
Run Code Online (Sandbox Code Playgroud)

现在,我想知道如何将它们自动注入我的视图中.当我使用Backbone.Router.navigate()eg 时,我会想要显示我的消息:

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

mvb*_*fst 13

我的5美分 - 使用Backbone进行Flash消息似乎有点过分.如果页面上只有1个flash消息实例,那么最好不要使用单独的模型.

相反,我会使用Flash消息和全局调度程序的视图:

Dispatcher = _.extend({}, Backbone.Events);
Run Code Online (Sandbox Code Playgroud)

创建视图:

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

    render: function(msg) {
       // do something with the message
    }
});
Run Code Online (Sandbox Code Playgroud)

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

Dispatcher.trigger('show_flash_message', 'Some message');
Run Code Online (Sandbox Code Playgroud)