2014-09-17 2 views
0

것은 내가 sencha 터치 2에서 itemtap 후에 폼 값을 바인딩하고 폼 뷰를 통해 데이터를 설정하려고 시도하지만 작동하지 않는 것 같아요. 다음 코드 :데이터 폼에 바인딩 Sencha Touch 2

//the controller file 
Ext.define('myApp.controller.myController' , 
{ 
    extend : 'Ext.app.Controller', 

    config : 
    { 
     refs : 
     { 
      myNavigationView : '#myNavigationView', 
      detailView : '#detailView' 
     }, 

     control : 
     { 
      '#listView' : 
      { 
       itemtap : 'itemSelected' 
      } 
     } 
    }, 

    itemSelected : function (list , index , target , record , e , eOpts) 
    { 
     var me = this; 
     me.getMyNavigationView().push({ xtype : 'detailView' }); 
     var detailView = me.getDetailView().down('[itemId=detailData]'); 
     detailView.setData(record.data); 

    } 


}); 


//the detailViewFile  
Ext.define('myApp.view.DetailView' , 
{ 
    extend : 'Ext.form.Panel', 

    xtype : 'detailView', 

    id : 'detailView', 

    config : 
    { 
     title : 'Detail', 

     layout : 
     {   
      pack: 'top' 
     }, 
     items : 
     [ 
      { 
       xtype : 'fieldset', 

       itemId : 'detailData', 

       items : 
       [ 
        { 
         xtype : 'textfield', 
         label : 'Some value', 
         disabled : true, 
         value : '{modelValue1}' 
        }, 
        { 
         xtype : 'textfield', 
         label : 'Some value', 
         disabled : true, 
         value : '{modelValue2}' 
        } 
       ] 
      } 
     ] 
    } 
}); 

내가지고있어 결과가 필드 형태이며, 값이이 {modelValue 1} 모양과 레코드에서 값을받지 못하고있다, 내가 가지고 저장소 및 모델, 레코드에서 값을 콘솔에 인쇄 할 시도하고 값이, 그래서, 거기에 세부 정보보기에서 설정할 수있는 목록 항목에서 값을 바인딩 할 수있는 방법입니다. 유일한 방법은 수동으로 각 텍스트를 설정하는 것입니다. 디?

답변

0

유일한 해결책은 폼보기와 각 텍스트 필드의 이름에 설정된 레코드 메서드를 사용하여 모델의 필드 이름과 같아야한다는 것입니다.

//the controller file 
Ext.define('myApp.controller.myController' , 
{ 
    extend : 'Ext.app.Controller', 

    config : 
    { 
     refs : 
     { 
      myNavigationView : '#myNavigationView', 
      detailView : '#detailView' 
     }, 

     control : 
     { 
      '#listView' : 
      { 
       itemtap : 'itemSelected' 
      } 
     } 
    }, 

    itemSelected : function (list , index , target , record , e , eOpts) 
    { 
     var me = this; 
     me.getMyNavigationView().push({ xtype : 'detailView' }); 
     var detailView = me.getDetailView(); 
     detailView.setRecord(record); 

    } 


}); 


//the detailViewFile  
Ext.define('myApp.view.DetailView' , 
{ 
    extend : 'Ext.form.Panel', 

    xtype : 'detailView', 


    config : 
    { 
     title : 'Detail', 
     itemId : 'detailView', 

     layout : 
     {   
      pack: 'top' 
     }, 
     items : 
     [ 
      { 
       xtype : 'fieldset', 

       itemId : 'detailData', 

       items : 
       [ 
        { 
         xtype : 'textfield', 
         label : 'Some value', 
         disabled : true, 
         name : 'modelFieldName1' 
        }, 
        { 
         xtype : 'textfield', 
         label : 'Some value', 
         disabled : true, 
         name : 'modelFieldName2' 
        } 
       ] 
      } 
     ] 
    } 
}); 
: 여기

은 예제 코드