如何在骨干应用程序中显示反馈/错误消息

Mat*_*att 3 validation model-view-controller crud backbone.js

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

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

Backbone对象是:Collection("post"模型) - > Model("post"对象) - > List/Edit/New Views(以及每个视图的JST模板)

所以,我正在寻找一个关于如何组织我的代码和模板以实现所需消息传递级别的高级描述.我已经掌握了如何在表单输入时更改时执行验证例程.但是不知道我现在有什么错误信息.

这是我正在考虑的方法.不确定它是否是一个好的:

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

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

And*_*rle 5

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

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

将其添加到您的收藏中并add在调用时触发它:

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

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