2012-01-03 76 views
3

我正在使用Rails/Backbone/JST模板进行简单的CRUD概念验证。到目前为止,我已经能够找到很多例子。但经过一番搜索和阅读,我还没有找到如何处理这些场景一个很好的例子:(名单显示屏幕上) 如何在骨干应用程序中显示反馈/错误消息

  • 信息消息成功添加到列表中的新项目:

    • 信息的消息:项目从列表中删除成功
    • 错误信息:问题域(S)进入
    • 现场级的错误信息:问题进入

    的骨干对象是: 集合(邻f“post”Models) - > Model(“post”object) - > List/Edit/New Views(以及每个视图的JST模板)

    所以,我正在寻找我应该如何组织我的代码和模板来达到所需的消息级别。我已经掌握了如何在表单输入发生变化时执行我的验证例程。但不知道我现在有什么错误信息。

    这是我正在考虑的方法。不知道这是否是一个好的:

    • 创建一个“消息”模型,它映射到一个“视图”,这是一个子视图(如果可能的话)在我现有的视图。这个视图/模型可以显示前面提到的前三个场景中的页面级消息和错误。不确定是否有“子视图”以及如何处理模板。但是,如果可能的话,父模板可以包含“消息”子模板。消息视图可以基于消息模型的状态显示/隐藏子模板。可行?笨?
    • 对于第四种情况,每次通过表单字段更改调用“model.set”时,模型验证将返回一个错误对象,每个错误字段包含特定的消息。我不想中断“model.set”,但我想在每个字段旁边显示错误消息。我想知道如何将我的编辑/新模板和Post模型/视图分解成不违反MVC模式的方式。即我不想将DOM元素引用到错误的plage中。

    对不起,如果这是模糊的。如果您倾向于提供帮助,请告诉我哪些代码片段可能有用(或其他详细信息),然后我会提供这些代码片段。

  • 回答

    5

    您创建一个全局事件总线。当出现错误时触发事件。您的观点应该显示消息来监听该事件总线上的事件。这样做,你的错误信息视图不需要知道你的所有收藏,反之亦然。该eventbus很简单:

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

    将它添加到您的收藏并触发它曾经add被调用时:

    var myCollection = Backbone.Collection.extend({ 
        initialize: function([],eventbus){ 
          this.bind('add', function(obj){eventbus.trigger('added', obj)} 
         } 
    }) 
    

    拿也看看文章:http://lostechies.com/derickbailey/2011/07/19/references-routing-and-the-event-aggregator-coordinating-views-in-backbone-js/

    +0

    安德烈亚斯。谢谢!这正是我所期待的。 – Matt 2012-01-03 18:07:54