在Backbone应用程序中使用keyup事件更新模型

7eumitmz  于 2022-11-10  发布在  其他
关注(0)|答案(1)|浏览(117)

我正在尝试在每个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() );              
        },

表单数据模型:

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

            urlRoot: null,

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

        return new FormsDataModel();
});
yacmzcpb

yacmzcpb1#

应使用行

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

而不是线

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

这就解决了这个问题。使用 Backbone 网的实用程序,如set(),因为只有其他模型被设置和保存等。FormsDataModelInst的模型也是一个 Backbone 网模型。

相关问题