backbone.js - 如何将主干表单链接到事件?

标签 backbone.js backbone-events

我正在尝试使用backbone-forms库来实现一个简单的登录表单。

$(function() {
  var LoginUser = Backbone.Model.extend({
    schema: {
      username: { type: 'Text'   },
      password: { type: 'Text'   }
    },
    url: 'login_backbone_form'
  });

  var thisLogin = new LoginUser();

  var form = new Backbone.Form({
    model: thisLogin,
    events: {
      "click button#formButton"   :   "saveForm"
    },

    saveForm: function() {
      alert('hit saveForm');
      this.model.save();
    }
  }).render();

  window.form = form;
  $('#formHook').html(form.el);
  $('<button type="button" name="login" id="formButton">Login</button>')
     .appendTo('#formHook');
});

我的 HTML 有一个 id='formHook' 的 div,页面显示一个带有登录按钮的表单。但按下按钮没有任何作用。

我在这里做错了什么?

最佳答案

第一个问题可能是您的表单按钮位于表单 View 的上下文之外。当您将 DOM 事件处理程序附加到 View 时,它们只会响应该 View 中的元素。尝试将表单和按钮嵌入主视图中。

这是代码,它也位于 JSFiddle 中: http://jsfiddle.net/evilcelery/hsSru/

$(function() {
    var LoginUser = Backbone.Model.extend({
        schema: {
            username: {
                type: 'Text'
            },
            password: {
                type: 'Text'
            }
        },
        url: 'login_backbone_form'
    });

    var LoginView = Backbone.View.extend({
      events: {
          "click button#formButton": "saveForm"
      },

      initialize: function() {
        this.model = new LoginUser();
      },

      render: function() {
        var $button = $('<button type="button" name="login" id="formButton">Login</button>');

        this.form = new Backbone.Form({ model: this.model });

        this.$el.append(this.form.render().el);
        this.$el.append($button);

        return this;
      },

      saveForm: function() {
          this.form.commit();
          this.model.save();

          alert('hit saveForm');
          console.log(this.model.toJSON());
      }
    });

    window.loginView = new LoginView;
    $('#formHook').html(loginView.render().el);
});

关于backbone.js - 如何将主干表单链接到事件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9186969/

相关文章:

javascript - BackboneJs教程问题

javascript - Backbone model.save() 以一种奇怪的方式将属性发送到服务器

javascript - 监听嵌套模型属性的变化

javascript - 一旦获取并呈现集合,是否可以在 Backbone 中触发事件?

javascript - 按结束年份和开始年份排序

javascript - 尝试将对象添加到主干集合时,此模型未定义

javascript - Backbone 模型责任

javascript - 在传播之前使用自定义数据扩展事件

backbone.js - Backbone 。在 View 之间调度/监听事件

javascript - 断言事件被观察到