2014-10-18 23 views
0

我正在嘗試更新每個關鍵事件的模型。該模型的屬性將用於模板中。所以他們應該在頁面加載之前定義。我已經定義他們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

應使用的

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

代替線

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

這解決了這個問題。像set()一樣使用骨幹的utilitess和其他模型一樣被設置和保存等。FormsDataModelInst的模型也是一個Backbone模型。