2012-01-03 6 views
3

Я работаю над простым доказательством CRUD концепции с шаблонами Rails/Backbone/JST. До этого момента мне удалось найти множество примеров. Но после долгих поисков и чтения, я еще найти хороший пример того, как обращаться с этими сценариями:Как показать обратную связь/сообщения об ошибках в базовом приложении

  • Информационное сообщение: Новый пункт успешно добавлен в список (на экране отображается список)
  • информационное сообщение: товар успешно удален из списка
  • сообщение
  • об ошибке: проблемы с полем (ами) ввода
  • поле сообщение об ошибке уровня: проблемы с входом

объекты Магистральные являются: Collection (о f "post" Models) -> Модель (объект post) -> Список/Редактировать/Новые виды (и шаблон JST для каждого из этих видов)

Итак, я ищу описание высокого уровня как я должен организовать свой код и шаблоны для достижения желаемого уровня обмена сообщениями. У меня уже есть инструкция о том, как выполнять мою процедуру проверки на входах формы каждый раз, когда они меняются. Но не знаю, что делать с сообщениями об ошибках, которые у меня есть.

Вот такой подход, который я рассматриваю. Не уверен, что он хороший:

  • Создайте модель «Сообщение», которая отображается в виде «Вид», который является подвидным (если это возможно) для моих существующих видов. Этот вид/модель может отображать сообщения и ошибки уровня страницы в первых трех сценариях, о которых я упоминал выше. Не уверен, что возможно иметь «подзадачу» и как обрабатывать шаблоны для этого. Но если это возможно, родительские шаблоны могут включать подшаблон «сообщение». Представление сообщения может отображать/скрывать подшаблон на основе состояния модели сообщения. Реализуемое? Глупый?
  • Для четвертого сценария проверка модели вернет объект ошибки с определенными сообщениями на каждое ошибочное поле каждый раз, когда «model.set» вызывается изменением поля формы. Я не хочу прерывать «model.set», но я хочу отображать сообщения об ошибках рядом с каждым полем. Я хочу знать, как повлиять на редактирование/новый шаблон и модель Post/view таким образом, чтобы я не нарушал шаблон MVC. То есть Я не хочу помещать ссылки на элементы DOM в неправильном виде.

Извините, если это неясно. Если вы склонны помогать, сообщите мне, какие фрагменты кода могут быть полезны (или другие данные), и я предоставил их.

ответ

5

Вы создаете глобальный eventbus. Когда появляется ошибка, запускается событие. Ваше представление, которое должно показать сообщение, прослушивает события на этом eventbus. При этом ваше сообщение об ошибках не обязательно должно знать всю вашу коллекцию и наоборот. 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

Andreas. Благодаря! Это именно то, что я искал. – Matt