2016-08-09 4 views
0

getRecord() 함수를 통해 내 양식에서 값을 가져오고 싶습니다.양식의 ExtJs getRecord() 함수가 작동하지 않습니다.

getRecord

데이터 객체가 비어 : 이 현재 form.getRecord()에서 얻는 결과 메신저입니다.

onAddNewsClick: function(button, e, eOpts) { 

    var win = this.getNewsEdit(); 
    if(!win){ 
     win = Ext.create('widget.newsedit'); 
    } 
    this.getNewsPanel().loadRecord(Ext.create('model.news')); 
    console.log(this.getNewsPanel()); 
    this.adding = true; 
    win.show(); 
}, 

OnSaveNewsClick: function(button, e, eOpts) { 

    var form = this.getNewsPanel(); 
    console.log(form); 
    var selectedRecord = form.getRecord(); 
    console.log(selectedRecord); 
    if (this.adding) { 
     this.adding = undefined; 
    } 
} 

correspoding 모델 : form.getValues와

Ext.define('mobile_admin.model.News', { 
extend: 'Ext.data.Model', 
alias: 'model.news', 

requires: [ 
    'Ext.data.field.Field' 
], 

fields: [ 
    { 
     name: 'title' 
    }, 
    { 
     name: 'newscontent' 
    }, 
    { 
     name: 'newsdate' 
    }, 
    { 
     name: 'status' 
    } 
]}); 

() 나는 양식의 모든 값을 가져

이 내 컨트롤러입니다. getValues

모델이 양식에 연결되어 있지 않은 것 같습니다. 양식에서 나는 필요한 이름 연결을 넣어 : (http://docs.sencha.com/extjs/5.1.0/Ext.form.Basic.html#method-loadRecord)

내 양식 항목 :

items: [ 
    { 
     xtype: 'textfield', 
     fieldLabel: 'Titel', 
     name: 'title' 
    }, 
    { 
     xtype: 'datefield', 
     fieldLabel: 'Datum', 
     name: 'newsdate' 
    }, 
    { 
     xtype: 'htmleditor', 
     height: 150, 
     width: 600, 
     fieldLabel: 'Inhalt', 
     name: 'newscontent', 
    }, 
    { 
     xtype: 'textfield', 
     fieldLabel: 'Status', 
     name: 'status' 
    }, 
] 

누구나 아이디어가있다? ExtJs (5.1.3)를 사용합니다. // 편집

이 ExtJS를 자동으로 할

var b = form.getRecord() 
b.set(form.getValues() 

Shouln't : 는 나는이 같은 기록을 할 수 있다는 것을 발견?

답변

2

loadRecord는 실제로 값을 설정하는 것입니다. 양식에 더 이상이 레코드를 사용하지 마십시오. 레코드 설정 값을 자동으로 수행 할 수있는 경우 당신은 질문

loadRecord: function(record) { 
    this._record = record; 
    return this.setValues(record.getData()); 
}, 

: 여기에 양식 문서입니다. 예, 가능하지만 바인딩이 필요합니다. 당신의 대답은 귀하의 답변 만 링크를 사용하여 올바른 수 있습니다

Ext.define('mobile_admin.model.News', { 
    extend: 'Ext.data.Model', 
    alias: 'model.news', 

    requires: [ 
     'Ext.data.field.Field' 
    ], 

    fields: [ 
     { 
      name: 'title', defaultValue : 'test' 
     }, 
     { 
      name: 'newscontent' 
     }, 
     { 
      name: 'newsdate' 
     }, 
     { 
      name: 'status' 
     } 
    ] 
}); 

Ext.define('mobile_admin.form.ViewModel', { 
    extend: 'Ext.app.ViewModel', 
    alias: 'viewmodel.formpanel', 

    links : { 
     theModel : { 
      type : 'mobile_admin.model.News', 
      create : true 
     } 
    } 
}); 

Ext.define('mobile_admin.form.formpanel', { 
    extend: 'Ext.form.Panel', 
    alias: 'widget.newsedit', 
    viewModel : 'formpanel', 

    items : [ 
     { 
      xtype: 'textfield', 
      fieldLabel: 'Titel', 
      name: 'title', 
      bind : { 
       value : '{theModel.title}' 
      } 
     }, 
     { 
      xtype: 'datefield', 
      fieldLabel: 'Datum', 
      name: 'newsdate', 
      bind : { 
       value : '{theModel.newsdate}' 
      } 
     }, 
     { 
      xtype: 'htmleditor', 
      height: 150, 
      width: 600, 
      fieldLabel: 'Inhalt', 
      name: 'newscontent', 
      bind : { 
       value : '{theModel.newscontent}' 
      } 
     }, 
     { 
      xtype: 'textfield', 
      fieldLabel: 'Status', 
      name: 'status', 
      bind : { 
       value : '{theModel.status}' 
      } 
     }], 

    buttons : [{ 
     text : 'Save', 
     handler : function(button) { 
      var vM = button.up('form').getViewModel(); 
      vM.notify(); 
      console.log(vM.get('theModel').getData()); 
     } 
    }] 
}); 

Ext.application({ 
    name : 'Fiddle', 

    launch : function() { 
     debugger; 
     var form = Ext.widget('newsedit'); 
     var window = Ext.widget('window', { 
      items : form 
     }); 
     window.show(); 
    } 
}); 
+1

있지만 전혀 좋지 않다 :

나는 샘플 코드를 준비했다. 링크가 오프라인 상태가되면 답변이 무효화됩니다. 링크는 답변을 개선하지 않고 링크를 대체합니다. 나는 대답 자체를 대답 몸 자체에 실제로 대답하기 위해 당신의 대답을 편집 할 것을 강력하게 제안 할 것이다. –