【问题标题】:How to show feedback/error messages in a backbone application如何在主干应用程序中显示反馈/错误消息
【发布时间】:2012-01-03 00:23:36
【问题描述】:

我正在使用 Rails/Backbone/JST 模板进行简单的 CRUD 概念验证。到目前为止,我已经找到了很多例子。但是经过大量搜索和阅读,我还没有找到一个很好的例子来说明如何处理这些场景:

  • 信息消息:新项目已成功添加到列表中(显示在列表屏幕上)
  • 信息消息:项目已成功从列表中删除
  • 错误消息:字段输入有问题
  • 字段级错误消息:输入问题

Backbone 对象是: 集合(“发布”模型)-> 模型(“发布”对象)-> 列表/编辑/新视图(以及每个视图的 JST 模板)

因此,我正在寻找关于如何组织我的代码和模板以实现所需消息传递级别的高级描述。我已经掌握了如何在表单输入更改时对它们执行验证例程。但现在我有了错误消息,不确定如何处理它们。

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

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

抱歉,如果这含糊不清。如果您愿意提供帮助,请告诉我哪些代码 sn-ps 可能会有所帮助(或其他详细信息),我会提供。

【问题讨论】:

    标签: model-view-controller validation backbone.js crud


    【解决方案1】:

    您创建了一个全局事件总线。当出现错误时触发事件。您应该显示消息的视图侦听此事件总线上的事件。这样做,您的错误消息视图不需要知道您的所有集合,反之亦然。事件总线很简单:

    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/

    【讨论】:

    • 安德烈亚斯。谢谢!这正是我想要的。
    猜你喜欢
    • 1970-01-01
    • 2012-05-05
    • 2010-10-13
    • 2010-10-13
    • 1970-01-01
    • 1970-01-01
    • 2022-11-24
    • 2011-03-14
    • 2020-07-11
    相关资源
    最近更新 更多