从View获取值并将其发送到Model

时间:2014-03-01 00:42:43

标签: javascript backbone.js

我在这一点上陷入困​​境。不知道这里出了什么问题。

  
    

注意:我是Backbone的新手

  

查看

var LoginForm = Backbone.View.extend({
    template:_.template('<input type="text" id="email" name="email" />'+
                        '<input type="password" id="password" name="password" />'+
                         '<input type="button" id="login" value="Login"/>'),
    events: {
        'click #login':'goIn'
    },
    initialize: function() {
        this.model.on('change', this.render, this);
    },
    goIn: function() {
            this.model.email = $('#email').val();
    this.model.passowrd = $('#passowrd').val();
        this.model.goIn();
            //this.render();
    },
    render: function() {
        var attributes = this.model.toJSON();
        this.$el.html(this.template(attributes));
    }
}); 

var loginForm = new LoginForm({model:loginModel});
loginForm.render();
$('#app').append(loginForm.el);

模型

var LoginFormModel = Backbone.Model.extend({
      url: 'http://localhost:3000/login',
      defaults: {
            email:"",
            password:""
      },
      goIn: function(req, resp) {
        console.log('hey whats up?'+JSON.stringify(this));
        //this.save();
      }
  });

  var loginModel = new LoginFormModel();

我在模型goIn()中没有任何内容。它只打印{"email":"", "password":""}

1 个答案:

答案 0 :(得分:1)

使用model.set。在您的视图中,不要使用this.model.email = ...,请使用:

 goIn: function() {
            this.model.set('email', $('#email').val());
            this.model.set('password', $('#passowrd').val());
            this.model.goIn();
            //this.render();
    }

这可以为您提供所需的结果。