【问题标题】:Updating a model with a keyup event in Backbone app在 Backbone 应用程序中使用 keyup 事件更新模型
【发布时间】:2014-10-18 21:54:57
【问题描述】:

我正在尝试更新每个 keyup 事件的模型。模型的属性将在模板中使用。所以它们应该在页面加载之前定义。我已经定义了它们null。但是当输入某些内容时,我无法从控制台读取更新的内容。

这样做的正确方法是什么?我的缺失点是什么?

登录视图片段:

events: {
            'keyup input' : 'updateModel',
            'click #loginbutton' : 'login',
            'click #renderregisterbutton' : 'render_register',
        },
        updateModel: function(e){
            e.preventDefault();
            var elm = e.target;
            FormsDataModelInst[ elm.id ] = $( elm ).val();
            this.model.set( FormsDataModelInst );
            console.log( "1-FormsDataModelInst:" + JSON.stringify( FormsDataModelInst.attributes ) );
            console.log( "2-this.model.set(...):" + JSON.stringify(this.model.attributes) );
            console.log( e );
            console.log( e.target );
            console.log( elm );
            console.log( elm.id );
            console.log( $( elm ).val() );              
        },

formsdatamodel:

define([
    'underscore',
    'backbone',
    ],
    function(_, Backbone) {
        var FormsDataModel = Backbone.Model.extend({

            urlRoot: null,

            defaults: {
                username: null,
                phone: null,
                email: null,
            },
        });

        return new FormsDataModel();
});

【问题讨论】:

    标签: javascript backbone.js backbone-events


    【解决方案1】:

    应该使用线

            FormsDataModelInst.set( elm.id, $( elm ).val() );
    

    而不是行

            FormsDataModelInst[ elm.id ] = $( elm ).val();
    

    这解决了问题。使用诸如 set() 之类的主干实用程序,仅设置和保存其他模型等。FormsDataModelInst 的模型也是主干模型。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-07-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-09-29
      • 1970-01-01
      • 2014-02-12
      • 1970-01-01
      相关资源
      最近更新 更多