我正在使用 Rails/Backbone/JST 模板进行简单的 CRUD 概念验证。到目前为止,我已经找到了很多例子。但是经过大量搜索和阅读,我还没有找到一个很好的例子来说明如何处理这些场景:
- 信息消息:新项目已成功添加到列表(显示在列表屏幕上)
- 信息消息:项目已成功从列表中删除
- 错误信息:字段输入有问题
- 字段级错误消息:输入有问题
Backbone 对象是: 集合(“后”模型)-> 模型(“后”对象)-> 列表/编辑/新 View (以及每个 View 的 JST 模板)
所以,我正在寻找关于我应该如何组织我的代码和模板以达到所需消息级别的高级描述。我已经掌握了如何在表单输入发生变化时对其执行验证例程。但我不确定如何处理这些错误消息。
这是我正在考虑的方法。不确定它是否是一个好:
- 创建一个“消息”模型,它映射到一个“ View ”,它是我现有 View 的 subview (如果可能的话)。这个 View /模型可以在我上面提到的前三个场景中显示页面级别的消息和错误。不确定拥有“ subview ”是否可行以及如何处理模板。但如果可能的话,父模板可以包含“消息”子模板。消息 View 可以根据消息模型的状态显示/隐藏子模板。可行的?傻吗?
- 对于第四种情况,每次通过表单字段更改调用“model.set”时,模型验证将返回一个错误对象,其中包含每个错误字段的特定消息。我不想中断“model.set”,但我确实想在每个字段旁边显示错误消息。我想知道如何以不违反 MVC 模式的方式考虑我的编辑/新模板和发布模型/ View 。 IE。我不想在错误的页面中引用 DOM 元素。
抱歉,如果这含糊不清。如果您愿意提供帮助,请告诉我哪些代码片段可能有用(或其他详细信息),我会提供它们。
最佳答案
您创建一个全局事件总线。当出现错误时触发事件。您应该显示消息的 View 监听此事件总线上的事件。这样做,您的错误消息 View 不需要知道您的所有集合,反之亦然。事件总线很简单:
var eventBus = _.extend({}, Backbone.Events);
将它添加到您的集合中,并在调用 add
时触发它:
var myCollection = Backbone.Collection.extend({
initialize: function([],eventbus){
this.bind('add', function(obj){eventbus.trigger('added', obj)}
}
})
关于model-view-controller - 如何在主干应用程序中显示反馈/错误消息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8706698/