Backbone.js: Почему это событие не связано? - PullRequest
22 голосов
/ 05 февраля 2011

У меня есть простой список задач, и все отображается должным образом, но когда я нажимаю кнопку «Отправить» в форме редактирования, форма отправляется (GET / todo_items), и страница перезагружается, и отображается только редактирование.форма.Событие «отправить форму» не является обязательным, и я не могу понять, почему.Чего мне не хватает?

App.Views.Edit = Backbone.View.extend({
  events: {
    "submit form": "save"
  },
  initialize: function(){
    this.render();
  },
  save: function(){
    var self = this;
    var msg  = this.model.isNew() ? 'Successfully created!' : 'Saved!';

    this.model.save({
      title: this.$('[name=title]').val(),

      success: function(model, resp){
        console.log('good');
        new App.Views.Notice({message: msg});
        self.model = model;
        self.render();
        self.delegateEvents();
        Backbone.history.saveLocation('todo_items/'+ model.id);
        $('#edit_area').html('');
      },
      error: function(){
        console.log('bad');
        new App.Views.Error();
      }
    });

    return false;
  },
  render: function(){
    $('#edit_area').html(ich.edit_form(this.model.toJSON()));
  }
});

Вот форма редактирования:

<script id="edit_form" type="text/html">
  <form>
    <label for="title">Title:</label>
    <input name="title" type="text" value="{{title}}" />
    <button>Save</button>
  </form>
</script>

Ответы [ 2 ]

25 голосов
/ 08 февраля 2011

Backbone использует DelegateEvents в элементе el.Если вы не укажете «el» или не используете «el» для визуализации своего представления, делегирование события не будет работать.Вместо того, чтобы делать

$("#edit_area") 

в вашем рендере, передайте его как опцию "el" в конструкторе:

edit = new App.Views.Edit({el: $("#edit_area")})

Сошлитесь на это как.особенно в вашем рендере.

0 голосов
/ 06 февраля 2011

После многих часов манипулирования этим он работал после того, как я явно установил el в представлении, и использовал $(this.el) в функции render.Weird.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...