2014-12-03 151 views
1

我可以發送參數給RestApi網絡服務。但我無法動態發送參數。 我需要一個文本框和按鈕。SENCHA TOUCH動態休息Api

這裏是我的app.js

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'] 
    } 
}); 

,並查看

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

我認爲您在Store申明中缺少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

感謝您的回答。其實只是我需要textfield和param配對。因爲我可以手動發送參數。 – 2014-12-03 14:46:31

+0

剛剛更新我的答案見上面,其中your_text_field_id是您的文本字段的ID。希望它有效。 – RE350 2014-12-03 16:12:43

+0

該代碼聽起來不錯。只是我還有一個問:我的按鈕處理程序是什麼:) – 2014-12-04 07:44:24