2014-12-03 5 views
1

RestApi 웹 서비스에 매개 변수를 보낼 수 있습니다. 하지만 매개 변수를 동적으로 보낼 수는 없습니다. 하나의 텍스트 필드와 버튼이 필요합니다. 여기 센 차 터치 동적으로 나머지 Api

Ext.application({ 
    name: 'Hello', 
    models: [ 'GreetingModel' ], 
    stores: [ 'GreetingStore' ], 
    views: [ 'GreetingView' ], 
    launch: function() { 

     var view = Ext.create('Hello.view.GreetingView', {}); 

     Ext.create('Hello.store.GreetingStore', { 
      autoLoad: true, 
      listeners: { 
       load: function (self, records) { 
       view.setData(records[0].getData()); 

       } 
      } 
     }); 
    } 
}); 

Ext.Loader.setConfig({ disableCaching: false }); 

내 가게

Ext.define('Hello.store.GreetingStore', { 
    extend: 'Ext.data.Store', 
    config: { 
     model: 'Hello.model.GreetingModel', 
     proxy: { 
      type: 'rest', 
      contentType: "application/json", 
      dataType: 'jsonp', 
      url: 'http://localhost:14551/senchaRegister.svc/request' 
     }, 

     listeners: { 
      beforeload: function() { 
       var name = 'Sedat'; 
       this.getProxy().setExtraParam('name', name); 
      } 
     } 
    } 
}); 

내 모델

Ext.define('Hello.model.GreetingModel', { 
    extend: 'Ext.data.Model', 
    config: { 
    fields: ['JSONDataResult'] 
    } 
}); 

볼 내 app.js이다

Ext.define('Hello.view.GreetingView', { 
extend: 'Ext.Panel', 
config: { 
    fullscreen: true, 
    tpl: '<p>Sonuç: {JSONDataResult}</p>', 

    items:[ 

    { 
     xtype: 'textfield', 
     label:'Name', 
     id:'username' 
    }, 

    { 
     xtype: 'button', 
     name:'send' 
     handler: function(){ 

      /* Stuffs*/ 
     } 
    } 
    ] 


} 

}};

조언이 필요합니다.

답변

0

스토어 신고서에 extraParams이 누락되었다고 생각합니다. 아래 매개 변수를 사용하십시오.

Ext.define('Hello.store.GreetingStore', { 
    extend: 'Ext.data.Store', 
    config: { 
     model: 'Hello.model.GreetingModel', 
     proxy: { 
      type: 'rest', 
      contentType: "application/json", 
      dataType: 'jsonp', 
      extraParams: { 
       param: 'data' 
      }, 
      url: 'http://localhost:14551/senchaRegister.svc/request' 
     }, 

     listeners: { 
      beforeload: function() { 
       var name = Ext.getCmp('your_text_field_id').getValue(); 
       this.getProxy().getExtraParam().param = name; 
      } 
     } 
    } 
}); 

view.js에서 아래 버튼을 클릭하면 상점을로드해야합니다.

handler: function(){ 
     var name = Ext.getCmp('your_text_field_id').getValue(); 
     Ext.getStore('GreetingStore').getProxy().param = name; 
     Ext.getStore('GreetingStore').load(); 
} 
+0

답변 해 주셔서 감사합니다. 사실 필자는 텍스트 필드와 param pairing이 필요합니다. 내가 수동으로 매개 변수를 보낼 수 있기 때문에. –

+0

방금 ​​위의 my_text_field_id 텍스트 필드의 ID입니다 위의 참조 내 업데이트 된. 작동합니다. – RE350

+0

코드가 좋게 들립니다. 그냥 하나 더 Q. 내 버튼 처리기는 무엇입니까 :) –