我正在尝试更新每个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的模型也是主干网模型。