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

Updating a model with a keyup event in Backbone app

本文关键字:keyup 事件 更新 模型 Backbone 应用程序      更新时间:2023-09-26

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

做这件事的正确方法是什么?我遗漏了什么?

loginview片段:

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();
});

应使用行

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

而不是线路

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

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