我正在尝试更新每个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() );
},
formsdatamodel:
define([
'underscore',
'backbone',
],
function(_, Backbone) {
var FormsDataModel = Backbone.Model.extend({
urlRoot: null,
defaults: {
username: null,
phone: null,
email: null,
},
});
return new FormsDataModel();
});
答案 0 :(得分:0)
应该使用行
FormsDataModelInst.set( elm.id, $( elm ).val() );
而不是
行 FormsDataModelInst[ elm.id ] = $( elm ).val();
这解决了这个问题。使用主干的utilitess就像set()一样,只需设置和保存其他模型等等.FormsDataModelInst的模型也是一个Backbone模型。